1. 写在前面
平时只是随便用用,没有整体的总结过super
这个关键字。
因此,今天这里我们系统的去看一下 super
关键字的特性和用法。
2. 理论知识
2.1 前置
在了解 super 关键字之前,我们需要了解一个前置信息:
每当创建子类的实例时,不会创建父类对象,但是会调用父类构造方法。并且,这个父类的构造方法会在子类构造方法第一行(即先于子类构造方法执行)。
那么为什么执行子类构造方法之前,需要执行父类的构造方法呢?因为子类需要
从父类继承 属性
& 方法
。
要继承就要先有啊,这就要求父类构造器先执行,初始化相关的对象和方法。
2.2 用法
super
关键字的用法包括如下几种:
-
super
引用直接父类对象 -
super()
调用直接父类构造函数
3. code
3.1 super
引用直接父类对象
这里通过 super
关键字直接引用父类对象【引用了对象自然就可以使用父类对象的属性&方法】
- 通过父类对象引用父类成员
public class Animal{
private String name="animal";
}
public class Dog extends Animal{
private String name = "dog";
public void printName(){
sout(name);
sout(super.name); // 这里打印 直接父类 的name属性 "animal"
}
}
- 通过父类对象引用父类方法
public class Animal{
public void bark(){
sout("animal is barking.");
}
}
public class Dog{
public void bark(){
super.bark(); // 这里调用父类的 bark() 方法。
sout("dog id barking....");
}
}
3.2 super()
调用父类构造函数
直接看代码吧
public class Animal{
Animal(){
sout("Animal is created.");
}
}
public class Dog{
Dog(){
super();
sout("dog is created.");
}
}
// main 方法调用
main(){
Dog dog = new Dog();
}
这里输出如下:
Animal is created.
dog is created.
网友评论