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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 还在路上 中级黑马   /  2014-12-27 23:28  /  2099 人查看  /  21 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

对于继承的构造访问特点小弟不是太明白,在网上查了好多,感觉还是迷糊。有没有大神给讲讲,越仔细越好!

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

21 个回复

倒序浏览
关键字super,子类的构造方法中默认第一行都有一句super()(创建对象调用父类无参构造方法);如果要访问父类带参构造,用super(参数),总之,子类中必须有一个构造方法通过super访问父类无参(带参)构造方法。

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
补充一下楼上,如果指定继承的父类,构造函数的第一行默认指向Object
回复 使用道具 举报
在继承的构造方法访问中,子类的构造方法(无参构造、带参构造)的第一行会默认给出super()的调用父类的无参构造函数,如果你给出了super()方法,就会访问你给出的,你没有给出就会访问默认的
回复 使用道具 举报
用super关键字
回复 使用道具 举报
用super关键字
子类肯定是一个父类,所以new子类时一定会涉及到对父类中就有的一些成员的初始化,为了不出错,就要使用父类的构造方法,令外再加上子类特有的成员初始化。
调用方法就是使用super.super不仅能调用父类的构造方法,还可以调用其它的方法,如果使用super调用在子类中重写的方法,不会出现多态,而是直接调用的父类中的方法。

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报 1 0
如果存在继承的关系,super()是给父类中的成员变量进行初始化用的
回复 使用道具 举报
如果存在继承的关系,super()是给父类中的成员变量进行初始化用的;如果不存在继承关系,系统也是有一个默认的super()在子类的第一行体现,此时默认给object初始化;因为继承关系的存在,子类是可以直接访问父类中的参数的,如果在子类初始化前,不对父类中的成员进行初始化,子类调用的是父类中默认的成员变量值(在堆内存中),一般是0,或者null,这样调用是没有任何意义的,所以我们想利用父类中的东西,必须先对他初始化,这样才更方便的运用
回复 使用道具 举报
用super,楼上说的好详细
回复 使用道具 举报
沙发讲的不错。。。。
回复 使用道具 举报
常强儿 发表于 2014-12-27 23:51
用super关键字
子类肯定是一个父类,所以new子类时一定会涉及到对父类中就有的一些成员的初始化,为了不出 ...

谢谢大神!
回复 使用道具 举报
董晗 发表于 2014-12-27 23:33
关键字super,子类的构造方法中默认第一行都有一句super()(创建对象调用父类无参构造方法);如果要访问父 ...

谢谢大神!
回复 使用道具 举报
红楼 中级黑马 2014-12-28 19:17:11
13#
原来是这样的啊  ,super好强大
回复 使用道具 举报
蛋卷 中级黑马 2014-12-29 00:07:38
14#
super、、、、、
回复 使用道具 举报
看是需要访问父类无参构造方法还是带参构造方法,具体如下(其中super是关键字):
父类无参:super();
父类带参:super(形参列表);
回复 使用道具 举报
cz萑 发表于 2014-12-27 23:44
在继承的构造方法访问中,子类的构造方法(无参构造、带参构造)的第一行会默认给出super()的调用父类的无 ...

谢谢,谢谢!
回复 使用道具 举报
靠super()调用啊。
回复 使用道具 举报
Franklin 发表于 2014-12-29 22:57
靠super()调用啊。

。。这个“靠”  有点霸气!
回复 使用道具 举报
Franklin 发表于 2014-12-29 22:57
靠super()调用啊。

。。这个“靠”  有点霸气!
回复 使用道具 举报
还在路上 发表于 2014-12-29 23:01
。。这个“靠”  有点霸气!

哎,比较口语化
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马