Java super关键字用法实战案例分析

本文实例讲述了Java super关键字用法。分享给大家供大家参考,具体如下:

一 点睛

如果子类继承了父类的数据成员,这时就需要调用父类的有参构造方法,来初始化来自父类的数据成员,这时就需要显示的调用父类中的有参构造方法super(参数1,参数2)。

二 实战——super调用父类中的构造方法

1 365bet体育在线官网_365体育投注平台_365在线体育消息

class Person
{
  String name;
  int age;

  public Person( String name, int age )  // 父类的构造方法
  {
    this.name = name;
    this.age = age;
  }
}
class Student extends Person
{
  String school;
  // 子类的构造方法
  public Student(String name, int age, String school)
  {
    super( name, age );      // 用super调用父类中的构造方法
    this.school = school;
  }
}
public class SuperDemo
{
  public static void main( String[] args )
  {
    Student s = new Student("Jack", 30, "HAUT");
    System.out.println( "Name:" + s.name + ", Age:" + s.age + ", School:" + s.school );
  }
}

2 运行

Name:Jack, Age:30, School:HAUT

3 说明

在子类的构造方法中明确地使用super(name,age),指明调用的是父类的有两个参数的构造方法。

调用super()必须写在构造方法的第1行,否则编译不过。

每个子类构造方法的第一句话,都隐含地调用了super(),如果父类中没有提供这种形式的构造方法,那么在编译的时候就会报错。

三 实战——通过super调用父类的属性和方法

1 365bet体育在线官网_365体育投注平台_365在线体育消息

class Person
{
  String name;
  int age;
  // 父类的构造方法
  public Person()
  {
  }
  public String talk()
  {
    return "I am :" + this.name + ", I am: " + this.age + " years old";
  }
}
class Student extends Person
{
  String school;
  // 子类的构造方法
  public Student( String name, int age, String school )
  {
    // 在这里用super调用父类中的属性,其实换成this也是可以的
    super.name = name;
    super.age = age;
    // 调用父类中的talk()方法
    System.out.print( super.talk() );
    // 调用本类中的school属性
    this.school = school;
  }
}
public class SuperDemo2
{
  public static void main( String[] args )
  {
    Student s = new Student( "Jack", 30, "HUAT" );
    System.out.println( ", I am from:" + s.school );
  }
}

2 运行

I am :Jack, I am: 30 years old, I am from:HUAT

更多java相关内容感兴趣的读者可查看本站专题:《Java面向对象程序设计入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。

时间: 2019-09-23

java之super关键字用法实例解析

本文实例讲述了java中super关键字的用法.分享给大家供大家参考.具体方法分析如下: super关键字:在java中使用super来引用基类的成分. 程序365bet体育在线官网_365体育投注平台_365在线体育消息如下: class FatherClass{ public int value; public void f(){ value = 100; System.out.println("FatherClass.value:"+value); } } class ChildClass extends FatherClass{ pri

java中this与super关键字的使用方法

java中this与super关键字的使用方法 这几天看到类在继承时会用到this和super,这里就做了一点总结,与各位共同交流,有错误请各位指正~ this this是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针. this的用法在java中大体可以分为3种: 1.普通的直接引用 这种就不用讲了,this相当于是指向当前对象本身. 2.形参与成员名字重名,用this来区分: class Person { private int age = 10; public Perso

Java中的super关键字_动力节点Java学院整理

一.super关键字 在JAVA类中使用super来引用父类的成分,用this来引用当前对象,如果一个类从另外一个类继承,我们new这个子类的实例对象的时候,这个子类对象里面会有一个父类对象.怎么去引用里面的父类对象呢?使用super来引用,this指的是当前对象的引用,super是当前对象里面的父对象的引用. super关键字测试 package com.bjpowernode.test; /** * 父类 * * */ class FatherClass { public int value

Java super关键字的使用方法详解

构造方法中的super关键字 在Java子类的构造方法中可以通过super关键字来调用父类的构造方法.其用法为: 1) super(); 访问父类中的无参构造函数 2) super (paras-); 访问父类中的成员函数yyy super()来调用父类无参的构造方法,但即使不使用super(),默认也会调用父类无参的构造方法.父类无参的构造方法可以是自定义的无参构造方法,也可以是编译器自动生成的默认构造方法.但如果父类中定义了有参的构造方法,但没有定义无参的构造方法,这时编译器不会生成默认构造

详解Java编程中super关键字的用法

通过用static来定义方法或成员,为我们编程提供了某种便利,从某种程度上可以说它类似于C语言中的全局函数和全局变量.但是,并不是说有了这种便利,你便可以随处使用,如果那样的话,你便需要认真考虑一下自己是否在用面向对象的思想编程,自己的程序是否是面向对象的. 好了,现在开始讨论this&super这两个关键字的意义和用法.在Java中,this通常指当前对象,super则指父类的.当你想要引用当前对象的某种东西,比如当前对象的某个方法,或当前对象的某个成员,你便可以利用this来实现这个目的,当

Android中比较常见的Java super关键字

super在android中比较常见,没有java基础也并不理解,所以空出时间学习了一下. 在Java类中使用super来引用基类的成分,比较简单,示例如下: class FatherClass{ public int value; public void f(){ value=100; System.out.println ("FatherClass.value:"+value); } } class ChildClass extends FatherClass{ public in

java方法重写和super关键字实例详解

?java方法重写和super关键字? 在继承中,其实就是子类定义了和父类同名的方法 就是方法,属性都是相通的 重写限制:? 被子类重写的方法不能拥有比父类方法更加严格的权限 super:强行调用父类方法的执行 重载和重写的区别?? 重?载是发生在一个类中?? 对权限没有要求?? 而且重载的方法参数可以不同 重写发生在继承汇总????? 被子类重写的方法不能拥有比父类方法更加严格的权限,重写的方法中参数名字完全相同 ?实例365bet体育在线官网_365体育投注平台_365在线体育消息: class A{ public void tell(){ Syst

Java继承extends与super关键字详解

函数也称为方法! 继承:在java中使用extends关键字来表示继承关系.super用来继承父类方法和参数. 继承就是子类继承父类的特征和行为,使得子类具有父类相同的行为. 注意事项: 1.当一个类没有继承任何一个类时,系统默认继承Object. 2.父类又被称为基类.超类.super类,子类又被称为派生类,这是由于翻译问题而导致的. 3.Java的继承是单一性的. 4.子类不能继承父类的构造方法,但是可以继承构造方法类的参数. 5.子类可以拥有自己的属性和方法,即子类可以对父类进行扩展.但子

Java的super关键字与instanceof运算符使用方法

Java super关键字 super 关键字与 this 类似,this 用来表示当前类的实例,super 用来表示父类. super 可以用在子类中,通过点号(.)来获取父类的成员变量和方法.super 也可以用在子类的子类中,Java 能自动向上层类追溯. 父类行为被调用,就好象该行为是本类的行为一样,而且调用行为不必发生在父类中,它能自动向上层类追溯. super 关键字的功能: 调用父类中声明为 private 的变量. 点取已经覆盖了的方法. 作为方法名表示父类构造方法. 调用隐藏变

举例讲解Java编程中this关键字与super关键字的用法

this 总要有个事物来代表类的当前对象,就像C++中的this指针一样,Java中的this关键字就是代表当前对象的引用. 它有三个主要的作用: 1.在构造方法中调用其他构造方法. ????? 比如有一个Student类,有三个构造函数,某一个构造函数中调用另外构造函数,就要用到this(),而直接使用Student()是不可以的. 2.返回当前对象的引用. 3.区分成员变量名和参数名. 看下面的例子: public class Student { private String name; p

举例讲解Java设计模式中的对象池模式编程

定义 一个对象池是一组已经初始化过且可以使用的对象的集合,池的用户可以从池子中取得对象,对其进行操作处理,并在不需要时归还给池子而非销毁它. 若初始化.实例化的代价高,且有需求需要经常实例化,但每次实例化的数量较少的情况下,使用对象池可以获得显着的效能提升.从池子中取得对象的时间是可预测的,但新建一个实例所需的时间是不确定. 实现 1. Reusable - 对象池中的对象,通常实例化代价比较高. 2. Client - 使用一个对象的实例. 3. ReusablePool - 管理对象的实例化

讲解Java编程中finally语句的基本使用方法

在java中的finally关键一般与try一起使用,在程序进入try块之后,无论程序是因为异常而中止或其它方式返回终止的,finally块的内容一定会被执行,写个例子来说明下: public class TryAndFinallyTest { public static void main(String[] args) throws Exception{ try{ int a = testFinally(2); System.out.println("异常返回的结果a:"+a); }

举例讲解Swift编程中switch...case语句的用法

Switch作为选择结构中必不可少的语句也被加入到了Swift中,只要有过编程经验的人对Switch语句都不会感到陌生,但苹果对Switch进行了大大的增强,使其拥有其他语言中没有的特性.使用Switch语句很简单: var i = 0 switch i { case 0: "0" //被输出 case 1: "1" default: "2" } 在这个最简单的Switch语句中,与其他语言很不同的一点是:不用显式的加上break.Swift的S

实例讲解Java编程中数组反射的使用方法

什么是反射 "反射(Reflection)能够让运行于JVM中的程序检测和修改运行时的行为."这个概念常常会和内省(Introspection)混淆,以下是这两个术语在Wikipedia中的解释: 内省用于在运行时检测某个对象的类型和其包含的属性: 反射用于在运行时检测和修改某个对象的结构及其行为. 从它们的定义可以看出,内省是反射的一个子集.有些语言支持内省,但并不支持反射,如C++. 内省示例:instanceof 运算符用于检测某个对象是否属于特定的类. if (obj inst

举例讲解C#编程中对设计模式中的单例模式的运用

单例模式的介绍 说到单例模式,大家第一反应应该就是--什么是单例模式?,从"单例"字面意思上理解为--一个类只有一个实例,所以单例模式也就是保证一个类只有一个实例的一种实现方法罢了,下面给出单例模式的一个官方定义:确保一个类只有一个实例,并提供一个全局访问点.为了帮助大家更好地理解单例模式,大家可以结合下面的类图来进行理解,以及后面也会剖析单例模式的实现思路: 为什么会有单例模式 看完单例模式的介绍,自然大家都会有这样一个疑问--为什么要有单例模式的?它在什么情况下使用的?从单例模式的

举例讲解C#编程中委托的实例化使用

合并委托 本示例演示如何创建多播委托. 委托对象的一个有用属性是:可以使用 + 运算符将多个对象分配给一个委托实例.多播委托包含已分配委托的列表.在调用多播委托时,它会按顺序调用列表中的委托.只能合并相同类型的委托. - 运算符可用于从多播委托中移除组件委托. using System; // Define a custom delegate that has a string parameter and returns void. delegate void CustomDel(string

举例讲解Python编程中对线程锁的使用

锁 python的内置数据结构比如列表和字典等是线程安全的,但是简单数据类型比如整数和浮点数则不是线程安全的,要这些简单数据类型的通过操作,就需要使用锁. #!/usr/bin/env python3 # coding=utf-8 import threading shared_resource_with_lock = 0 shared_resource_with_no_lock = 0 COUNT = 100000 shared_resource_lock = threading.Lock()

浅谈Java编程中的synthetic关键字

java synthetic关键字.有synthetic标记的field和method是class内部使用的,正常的源365bet体育在线官网_365体育投注平台_365在线体育消息里不会出现synthetic field.小颖编译工具用的就是jad.所有反编译工具都不能保证完全正确地反编译class.所以你不能要求太多. 下面我给大家介绍一下synthetic 下面的例子是最常见的synthetic field Java365bet体育在线官网_365体育投注平台_365在线体育消息 class parent { public void foo() { } class inner { inner() { foo

Java编程中10个最佳的异常处理技巧

在实践中,异常处理不单单是知道语法这么简单.编写健壮的365bet体育在线官网_365体育投注平台_365在线体育消息是更像是一门艺术,在本文中,将讨论Java异常处理最佳实践.这些Java最佳实践遵循标准的JDK库,和几个处理错误和异常的开源365bet体育在线官网_365体育投注平台_365在线体育消息.这还是一个提供给java程序员编写健壮365bet体育在线官网_365体育投注平台_365在线体育消息的便利手册.Java 编程中异常处理的最佳实践 这里是我收集的10个Java编程中进行异常处理的10最佳实践.在Java编程中对于检查异常有褒有贬,强制处理异常是一门语言的功能.在本文中,我们将尽量减少使用检查型异常,同时学会在Java编程中使用检查型VS非检查型异常