A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 星耀 中级黑马   /  2015-8-12 10:03  /  785 人查看  /  17 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 星耀 于 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值
}

17 个回复

倒序浏览
能否上一个代码,有点没看明白!
回复 使用道具 举报
说的不错
回复 使用道具 举报
表示没看太懂
回复 使用道具 举报
不明觉厉!
回复 使用道具 举报
附上代码看看啊
回复 使用道具 举报
星耀 中级黑马 2015-8-12 21:58:05
7#
耀阳圣尊 发表于 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:30
8#

我重新加上代码了,看看。。
回复 使用道具 举报
星耀 中级黑马 2015-8-12 22:00:56
9#
superhs 发表于 2015-8-12 21:51
附上代码看看啊

加上代码了。。。
回复 使用道具 举报
好,赞赞
回复 使用道具 举报
理解的很透彻啊!鼓励!
回复 使用道具 举报
.。。。。。。
回复 使用道具 举报
wang949055945 来自手机 中级黑马 2015-8-12 22:18:49
13#
写的挺好,赞一个
回复 使用道具 举报
要不要加上this一起比较会更好呢??
回复 使用道具 举报
默认存在于子类构造函数中第一行,用于调用父中空参构造函数的super
回复 使用道具 举报
墨琰 发表于 2015-8-12 22:51
默认存在于子类构造函数中第一行,用于调用父中空参构造函数的super

额,你说的对,那是子类中的构造函数默认调用父类中的构造函数,我这里说的是子类中调用父类的成分。。
回复 使用道具 举报
嗯呢  super是子类调用父类中内容所用的关键字
回复 使用道具 举报
super调用父类的构造器,this代表当前对象
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马