二、Java面向对象(8)_继承思想——super关键字

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共存。

原文地址:https://www.cnblogs.com/sunNoI/p/8977087.html