阅读 200

Java中的继承机制

在Java中继承指的是对某一批类的抽象,从而实现对现实世界更好的建模。我其实更喜欢将这种关系形容为一种具象化,子类是父类的具象化,除了私有方法和属性外,子类可以调用父类中的所有方法和属性。

  1. extends的意思是“扩展”。子类是父类的扩展。
  2. JAVA中的类只有单继承,没有多继承。
  3. 继承是类和类之间的一种关系。除此之外,类和类直接的关系还有依赖、组合、聚合等。
  4. 继承关系的两个类,一个为子类(派生类),一个为父类(基类)。子类继承父类,使用关键字extends来表示。
  5. 子类和父类之间,从意义上讲应该具有"is a"的关系。
  6. object类
  7. super
  8. 方法重写
  9. super关键字,调用父类里面的方法和属性。
  10. this关键字,调用自己的当前类方法和属性。

父类

package com.encapsulation.demo01;

// 人类 父类  ctrl+h 查看继承树
public class Person {
    // pubilc 公共
    // protected 保护
    // default 默认
    // private  私有

    private int money = 10_0000_0000;
    
    // 在父类中定义一个无参构造
    public Person() {
        System.out.println("Person执行了");
    }
    
     // 私有的无法继承到子类
    private void pri() {
         System.out.println("私有");
     }

    public void say() {
        System.out.println("说了一句话");
    }

    public int getMoney() {
        return money;
    }

    public void setMoney(int money) {
        this.money = money;
    }
}
复制代码

子类

package com.encapsulation.demo01;

// 学生类继承于人类  派生类
// 子类继承了父类就会拥有父类的全部方法 前提修饰符为pubilc
// 在java中所有的类都直接或间接都继承object类

public class Student extends Person {
    
    // 子类中也定义一个无参构造
    public Student() {
        super(); // 调用父类的构造器必须放在第一行,  这里的super默认调用父类无参构造
        System.out.println("执行了Student");
    }
    
     public void test() {
        super.say(); // 利用super调用父类的方法
    }
}
复制代码

执行

package com.encapsulation;

import com.encapsulation.demo01.Student;

public class App {

    public static void main(String[] args) {
        Demo01 s1 = new Demo01();
        
        // new student 默认执行父类的构造在执行自己的构造
        Student student = new Student();

    }
}
复制代码

image

子类

package com.encapsulation.demo01;

//派生类
public class Teacher extends Person {
    
}
复制代码

注意点

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

Vs this

代表的对象不同:

  1. this: 本身调用者这个对象

  2. super: 代表父类对象的应用

  3. 前提 - this:没有继承也可以使用 - super: 只能在继承条件才可以使用

  4. 构造方法

    • this(); 本类的构造
    • super; 父类的构造

知识点 类里面的构造方法和普通方法的区别

  1. 构造方法有无参构造和有参构造,每个类必须有一个无参构造,否则会无法实例化

  2. 多个有参构造会进行方法重载,必须每个参数类型不一致

  3. 构造方法名和类名一致

// 有参构造方法 方法的重载必须参数类型不一样
public Student(String name) {
    System.out.println(name);
}

// 有参构造方法
public Student(int age) {

}




Student student = new Student(12); // 这里根据数据类型来决定执行哪个有参构造
复制代码

总结

  1. 父类私有属性和方法无法继承到子类
  2. 子类通过super调用父类的方法和属性
  3. 父类和子类都有无参构造的时候,new 子类 (此时子类默认先调用父类无参构造,在执行自己的默认构造),默认调用super();

最后,祝大家早日学有所成,拿到满意offer,快速升职加薪,走上人生巅峰。 可以的话请给我一个三连支持一下我哟,我们下期再见

                    

文章分类
后端
文章标签