Java学习之继承练习题

目录

第一题

代码

输出流程分析

运行结果

考察知识点

第二题

 代码

流程分析

运行结果

 第三题

题目要求

我的代码

代码改进


第一题

代码

package com.hspedu.extends_.exercise;

public class ExtendsExercise01 {
    public static void main(String[] args) {
        B b = new B();
    }
}
class A {
    A(){//默认的无参构造器
        System.out.println("a");
    }
    A(String name){
        System.out.println("a name");
    }
}
class B extends A {
    B(){
        //已经有this就不会有super了
        this("abc");
        System.out.println("b");
    }
    B(String name){
        super();
        System.out.println("b name");
    }
}

输出流程分析

1)调用B类无参构造器,因为构造器内第一行有this(),所以不会再调用父类的无参构造器

2)执行this("abc");

3)执行super();

4)执行父类即A类的无参构造器,输出a(第一次输出)

5)输出b name(第二次输出)

6)输出 b (第三次输出)

运行结果

考察知识点

1)当创建子类对象时, 不管使用子类的哪个构造器, 默认情况下总会去调用父类的无参构造器

2)在构造器中,this()和super()不能同时使用

第二题


 代码

package com.hspedu.extends_.exercise;

public class ExtendsExercise02 {
    public static void main(String[] args) {
        C1 c1 = new C1();
    }
}
class A1 {
    public A1(){
        System.out.println("我是A类");
    }
}
class B1 extends A1 {
    public B1(){
        System.out.println("我是B类的无参构造");
    }
    public B1(String name) {
        System.out.println(name + "我是B类的有参构造");
    }
}

class C1 extends B1 {
    public C1() {
        this("hello");
        System.out.println("我是c类的无参构造");
    }
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值