继承

  1. 继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模。
  2. extends的意思是“扩展”。子类是父类的扩展。
  3. JAVA中的类只有单继承,没有多继承。
  4. 继承是类和类之间的一种关系。除此之外,类和类直接的关系还有依赖、组合、聚合等。
  5. 继承关系的两个类,一个为子类(派生类),一个为父类(基类)。子类继承父类,使用关键字extends来表示。
  6. 子类和父类之间,从意义上讲应该具有"is a"的关系。
  7. object类
  8. super
  9. 方法重写
  10. super关键字,调用父类里面的方法和属性。
  11. 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. 代表的对象不同:
  2. this: 本身调用者这个对象
  3. super: 代表父类对象的应用
  4. 前提
    1. this:没有继承也可以使用
    2. super: 只能在继承条件才可以使用
  5. 构造方法
    1. this(); 本类的构造
    2. super; 父类的构造

知识点

  1. 类里面的构造方法和普通方法的区别

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

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

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

    4. // 有参构造方法 方法的重载必须参数类型不一样
      public Student(String name) {
          System.out.println(name);
      }
      
      // 有参构造方法
      public Student(int age) {
      
      }
      
      
      
      Student student = new Student(12); // 这里根据数据类型来决定执行哪个有参构造
      

总结

  1. 父类私有属性和方法无法继承到子类
  2. 子类通过super调用父类的方法和属性
  3. 父类和子类都有无参构造的时候,new 子类 (此时子类默认先调用父类无参构造,在执行自己的默认构造),默认调用super();
posted @ 2021-06-29 09:23  橙子yuan  阅读(54)  评论(0)    收藏  举报