Java继承特性(学习推荐版)——java三大特性之一,子类extends父类

定义

image-20231202185829841

image-20231202190531274

Java支持单继承和多层继承,但不支持多继承

# 子类构造器及super用法

image-20231203134845000

image-20231203134816206

image-20231203134910186

解释:子类构造器,注意是子类的构造器,不是子类的方法的第一行默认都会有super()去调用无参构造器,只不过可以省略没写而已。当然也可以自己写super(参数)必须放第一行,去调用有参数构造器。


*见下图,若父类没有无参构造器,则子类构造器(不是子类方法)必须自己写super(参数列表)去调用父类构造器,而且必须放一行

image-20231203135217259

总结:子类构造器第一行必须写super(参数列表),若没有参数列表,则super可以省略。


应用场景如下

image-20231203135922367


补充知识:任意类的构造器中,可以通过this(参数列表)去调用该类的其他构造器的

image-20231203140541285

image-20231203140708004

若子类构造器写了this(参数类别)必须,那么this(参数列表)放构造器的第一行

this()和super()只能存在一个,而且必须放第一行

分析以下代码:

 package Pack2;
 ​
 public class Test {
     public static void main(String[] args) {
         Student zhangsan = new Student("zhangsan");
         System.out.println(zhangsan.getName());
         System.out.println(zhangsan.getAge());
     }
     public void fun() {
         System.out.println("fun");
     }
 }
 class Student extends People{
     private String name;
     private int age;
 ​
     public String getName() {
         return name;
     }
 ​
     public void setName(String name) {
         this.name = name;
     }
 ​
     public int getAge() {
         return age;
     }
 ​
     public void setAge(int age) {
         this.age = age;
     }
     public Student() {
         super();
         System.out.println("无参");
         this.age = 1;
     }
 ​
     public Student(String name) {
         this();  //这里写了this()那么默认的super()就没有了
         //也就是this()和super()只能存在一个
         this.name = name;
     }
 }
 class People {
     People() {
         System.out.println("父类构造器");
     }
 }

下图为执行流程

image-20231203142352234

运行结果如下:

image-20231203142459876

分析如下:

因为public String(String name)中存在this了 那么不会去调super()了,去到this()指向的构造器,若该构造器没有this去指向另一个构造器了,那么super()就执行了,也就是说super(参数列表)最多执行一次


继承好处

image-20231202190640052

示例代码

1.

image-20231202190321229

注释部分代表报错的代码

  • 45
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

莫青.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值