2018-05-01
super关键字
什么是super?
this:表示当前对象本身,或当前类的一个实例,通过 this 可以调用本对象的所有方法和属性。
super:表示当前对象的父类对象。(是在子类对象中对父类对象的引用)
super可以理解为是指向自己超(父)类对象的一个指针,而这个超类指的是离自己最近的一个父类。
在JAVA类中使用super来引用父类的成分,用this来引用当前对象,如果一个类从另外一个类继承,我们new这个子类的实例对象的时候,这个子类对象里面会有一个父类对象。
怎么去引用里面的父类对象呢?使用super来引用,this指的是当前对象的引用,super是当前对象里面的父对象的引用。
代码举例:
1 //鸟类
2 class Bird
3 {
4 public void fly(){
5 System.out.println("自由飞翔");
6 }
7 }
8 //企鹅
9
10 class Penguin extends Bird
11 {
12
13 public void fly(){
14 System.out.println("折翼天使");
15 }
16 public void say(){
17 System.out.println("我要唱歌哈哈哈");
18 super.fly();//使用super作为父类对象的引用对象来调用父类对象里面的fly()方法
19 }
20 }
21
22 //Super关键字
23 class SuperDemo
24 {
25 public static void main(String[] args)
26 {
27 //创建一个企鹅对象
28 Penguin p = new Penguin();
29 //调用飞翔方法
30 p.say();
31 }
32 }
输出结果:
内存分析:
参考博客:
https://www.cnblogs.com/danbing/p/5034108.html
https://www.cnblogs.com/ahfz/p/5890631.html
super的用法总结
1)普通的直接引用
与this类似,super相当于是指向当前对象的父类,这样就可以用super.xxx来引用父类的成员。
2)调用父类被覆盖的方法
3)调用父类某一个构造函数
参考:https://www.cnblogs.com/hasse/p/5023392.html(this和super的用法总结)
static不能和super、this共存。