Java super关键字的2种用法(非常详细)
super 是 Java 中的一个关键字,本文讲解它的两种用法,分别是:
这样可以确保在创建子类对象时,先初始化父类的部分。
【实例】使用关键字super访问父类的构造方法,代码如下:
super() 调用的是无参数构造方法,super(参数列表) 调用的是有对应参数的构造方法。
当子类重写了父类的方法,而在子类的方法中又想调用父类被重写的方法时,可以使用“super.方法名称(参数列表)”来调用。
【实例 2】通过使用关键字 super 实现访问方法和属性,代码如下:
- 用 super() 访问父类的构造方法;
- 用 super 访问父类的成员变量和成员方法。
Java super访问父类的构造方法
在子类的构造方法中,可以使用 super() 来调用父类的无参数构造方法;使用 super(参数列表) 来调用父类的有参数构造方法。这样可以确保在创建子类对象时,先初始化父类的部分。
【实例】使用关键字super访问父类的构造方法,代码如下:
public class Animal { // 定义私有的属性:name private String name; public Animal() { System.out.println("Animal Constructor"); } public Animal(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } // 定义成员方法:eat 方法 public void eat(){ System.out.println("Animal 动物吃东西"); } } public class Cat extends Animal{ public Cat() { super(); System.out.println("Cat Constructor"); } public Cat(String name) { super(name); } @Override public void eat() { System.out.println("Cat 猫吃猫粮"); } // 子类中特有的方法 public void sleep(){ System.out.println("猫在睡觉"); } }在上述代码中,我们可以看出 Cat 类的构造方法使用关键字 super 调用父类的构造方法。super() 调用的是无参数构造方法,super(name) 调用的是带有一个参数的构造方法。
super() 调用的是无参数构造方法,super(参数列表) 调用的是有对应参数的构造方法。
Java super访问方法和属性
当子类和父类有同名的成员变量时,可以使用“super.成员变量名”来访问父类的成员变量。当子类重写了父类的方法,而在子类的方法中又想调用父类被重写的方法时,可以使用“super.方法名称(参数列表)”来调用。
【实例 2】通过使用关键字 super 实现访问方法和属性,代码如下:
public class Animal { // 定义私有的属性:name private String name; public Animal() { System.out.println("Animal Constructor"); } public Animal(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } // 定义成员方法:eat 方法 public void eat(){ System.out.println("Animal 动物吃东西"); } } public class Cat extends Animal{ public Cat() { super(); System.out.println("Cat Constructor"); } public Cat(String name) { super(name); } /* * 子类重写了父类的方法 */ @Override public void eat() { super.setName("小动物"); super.eat(); } // 子类中特有的方法 public void sleep() { System.out.println("猫在睡觉"); } }在上述代码中,我们可以看出,Cat 类中的 eat() 方法可以使用关键字 super 访问父类的属性和父类的方法。