黑马程序员技术交流社区

标题: super关键字 [打印本页]

作者: 星耀    时间: 2015-8-12 10:03
标题: super关键字
本帖最后由 星耀 于 2015-8-12 21:58 编辑

在JAVA类中使用super来引用父类的成分,用this来引用当前对象,如果一个类从另外一个类继承,我们new这个子类的实例对象的时候,这个子类对象里面会有一个父类对象。怎么去引用里面的父类对象呢?使用super来引用,this指的是当前对象的引用,super是当前对象里面的父对象的引用。

遇到子类中的成员变量或方法与父类中的成员变量或方法同名。因为子类中的成员变量或方法名优先级高,所以子类中的同名成员变量或方法就隐藏了父类的成员变量或方法,但是我们如果想要使用父类中的这个成员变量或方法,就需要用到super.this就是自身的成员变量和方法,可以省略

class Fu{   string name;
    void value(){
       name = "fu"
    }
}
class Zi{   string name;
    void value(){
       name = "zi"
    }
   super.value(); //  调用父类中的value方法
   System.out.println(super.name);输出父类中的name值
   this.value(); //  调用子类中的value方法
   System.out.println(this.name);输出子类中的name值
}


作者: 耀阳圣尊    时间: 2015-8-12 15:43
能否上一个代码,有点没看明白!
作者: boboyuwu    时间: 2015-8-12 16:01
说的不错
作者: 永飞    时间: 2015-8-12 21:44
表示没看太懂
作者: 陈cc    时间: 2015-8-12 21:45
不明觉厉!
作者: superhs    时间: 2015-8-12 21:51
附上代码看看啊
作者: 星耀    时间: 2015-8-12 21:58
耀阳圣尊 发表于 2015-8-12 15:43
能否上一个代码,有点没看明白!

遇到子类中的成员变量或方法与父类中的成员变量或方法同名。因为子类中的成员变量或方法名优先级高,所以子类中的同名成员变量或方法就隐藏了父类的成员变量或方法,但是我们如果想要使用父类中的这个成员变量或方法,就需要用到super.this就是自身的成员变量和方法,可以省略

class Fu{   string name;
    void value(){
       name = "fu"
    }
}
class Zi{   string name;
    void value(){
       name = "zi"
    }
   super.value(); //  调用父类中的value方法
   System.out.println(super.name);输出父类中的name值
   this.value(); //  调用子类中的value方法
   System.out.println(this.name);输出子类中的name值
}


作者: 星耀    时间: 2015-8-12 21:59
永飞 发表于 2015-8-12 21:44
表示没看太懂

我重新加上代码了,看看。。
作者: 星耀    时间: 2015-8-12 22:00
superhs 发表于 2015-8-12 21:51
附上代码看看啊

加上代码了。。。
作者: 江峰    时间: 2015-8-12 22:02
好,赞赞
作者: qq100511544    时间: 2015-8-12 22:11
理解的很透彻啊!鼓励!
作者: 武动奇迹    时间: 2015-8-12 22:11
.。。。。。。
作者: wang949055945    时间: 2015-8-12 22:18
写的挺好,赞一个
作者: 懒懒~伍    时间: 2015-8-12 22:33
要不要加上this一起比较会更好呢??
作者: 墨琰    时间: 2015-8-12 22:51
默认存在于子类构造函数中第一行,用于调用父中空参构造函数的super
作者: 星耀    时间: 2015-8-12 23:00
墨琰 发表于 2015-8-12 22:51
默认存在于子类构造函数中第一行,用于调用父中空参构造函数的super

额,你说的对,那是子类中的构造函数默认调用父类中的构造函数,我这里说的是子类中调用父类的成分。。
作者: 墨琰    时间: 2015-8-13 22:45
嗯呢  super是子类调用父类中内容所用的关键字
作者: F灬灬    时间: 2015-8-15 14:50
super调用父类的构造器,this代表当前对象




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2