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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 流浪的风 中级黑马   /  2013-9-23 19:42  /  1109 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 流浪的风 于 2013-9-23 20:46 编辑

public class Fu {
        Fu(){
               
        }
        Fu(String s){
               
        }
}
class Zi extends Fu{
        Zi(){}
        Zi(int a){
                //super();
                this();//这样的话要想创建这个类的对象还会找父类吗?this()和super()都要放在第一行执行
        }
}

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

3 个回复

倒序浏览
希望在加深了解关于注释的含义和作用!
super()和this()不能同时出现
super初始化父类
this初始化子类
都初始化了同名成员变量和方法该向谁看齐,所以不能同时出现
(这个是个人的理解解释)

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
刚看到楼主提的问题,然后饿把搂住的代码修改了下,加了几行测试代码--->
public class Fu {
        Fu() {
                System.out.println("fu");
        }

        Fu(String s) {

        }
        public static void main(String[] args) {
                new Zi(1);
        }
}

class Zi extends Fu {
        Zi() {
                System.out.println("zi");
        }

        Zi(int a) {
                super();
                //this();// 这样的话要想创建这个类的对象还会找父类吗?this()和super()都要放在第一行执行
        }
}


super 的执行结果: fu  
所以用 super(); 的话,应该就是直接创建父类对象了

this 的执行结构:fu zi
所以用 this() 的话,应该就是创建自己这个类,这里是 Zi 类对象了,Zi 类的构造方法会默认调用父类的构造方法,所以会出现 fu zi  这样的结果

希望可以帮到楼主、、、

The you smile until forever 、、、、、、、、、、、、、、、、、、、、、

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
在创建子类对象时先初始化父类的对象,再初始化子类;调用无参构造时先执行Zi()同时他会去找父类的Fu()同时自己挂起,在执行父类的结束后再执行,当有参的时候执行this遇到一个无参构造与上面相似
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马