开发者社区> 问答> 正文

JAVA中子类用this调用同类构造器,同时调用父类构造器怎么解决啊?

已解决

package day02;

public class Super { int i; String str; public Super(){ this(1); System.out.println("1");} public Super(int i){

System.out.println("2");} public Super(int i,String str){ this(1); System.out.println("3");} public static void main(String[] args) { Super s = new Sub(2); } } class Sub extends Super{ int i; String str; public Sub(){ this(12,"12"); System.out.println("4"); } public Sub(int i){ this(); System.out.println("5"); } public Sub(int i,String str){ super(1,"1"); System.out.println("6");} }

为什么输出的是23645呢,这里有什么JAVA语言规定吗?

展开
收起
一个臻吖 2022-04-02 16:04:19 1067 0
1 条回答
写回答
取消 提交回答
  • 推荐回答

    main 执行new Sub(2);

    按class sub构造方法,sub(int i)是先执行this()也就是Sub();//这里先留一步,稍后回来执行sub( int i)后面的打印5

    执行sub(),按构造方法是要执行 this(12,"12")也就是sub(12,"12")//这里先留一步,稍后回来执行sub()后面的打印4

    执行sub(12,"12"),按构造方法是先执行继承自父类的Super(1,"1");super指继承父类,//这里先留一步,稍后回来执行sub(int i,String str)后面的打印6

    执行Super(1,"1"),同样是先执行父类的this(1)即父类的Super(1),按执行,终于不再拐弯,打印出一个2,然后再执行Super(1,"1")后面的打印3

    2022-04-02 18:00:03
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载