继承

1 概述

Java中只有单继承

  • 继承是类和类之间的一种关系。除此之外,类和类之间的关系还有依赖、组合、聚合等
  • 继承关系的2个类,一个为子类(派生类),一个为父类(基类)。子类继承父类,使用关键字extends

2 实例

PS:

  • 一般属性才会私有,方法不会
  • ctrl+h 打开继承树
  • Java中,所有的类,都默认直接或间接继承Object类

3 super

java中的 super 关键字是一个引用变量,用于引用 直接父类对象。

3.1 调用属性

Student.java

package com.oop;

//Student 类
public class Student extends Person {
    private String name = "student";

    public void speak(String name){
        System.out.println(name);//jerry
        System.out.println(this.name);//student
        System.out.println(super.name);//调用父类name属性
    }

}

运行效果图:

3.2 调用方法

Student.java

package com.oop;

//Student 类
public class Student extends Person {
    private String name = "student";

    public void speak(String name){
        System.out.println(name);//jerry
        System.out.println(this.name);//student
        System.out.println(super.name);//父类name属性
    }
    public void test(){
        print();//Student_print
        this.print();//Student_print
        super.print();//Person_print
    }
    public void print(){
        System.out.println("Student_print");
    }

}

PS:父类私有的子类无法继承。私有方法,私有属性。

3.3 构造方法

在创建对象时,构造方法被自动调用,用于初始化。

PS:

  • 显式 调用父类的构造器 super() 构造必须放在第一行。
  • 子类默认调用父类的构造方法

3.3.1 无参构造问题

  1. 父类不存在无参构造,子类会报错。
  2. 如果自定了有参构造,必须要显示写上无参构造--除非子类调用父类的有参构造

4 方法重写

方法重载和重写不一样

  • 方法重载:方法名相同,参数列表不同

4.1 带 static 关键字

PS:这里并不是方法的重写。

4.2 去除static关键字

PS:

  • 这里是方法的重写
  • B.java 旁边 O 代表重载,

4.3 IDE 自动生成

快捷键:alt+insert

5 总结

5.1 super

  1. super调用父类的构造方法,必须放在构造方法第一行
  2. super 必须只能出现在子类 的方法或者构造方法中
  3. super 和 this 不能同时调用构造方法!

5.2 this VS super

5.2.1 代表对象

  • this:本身调用者这个对象
  • super:父类对象的引用

5.2.2 使用条件:

  • this:没有对象也可以使用
  • super:只能在继承条件才可以使用

5.2.3 构造方法

  • this():本类的构造
  • super():父类的构造!

5.3 方法重写

重写需要有继承关系,子类重写父类的方法!

  1. 方法名、参数列表必须相同
  2. 修饰符:范围可以扩大但不能缩小: public > Protected > Default > private
  3. 抛出的异常:范围,可以缩小,但不能扩大: ClassNotFoundException ---> Exception
posted @ 2022-04-09 12:01  MR·Jerry  阅读(64)  评论(0)    收藏  举报