继承
- 继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模。
- extends的意思是“扩展”。子类是父类的扩展。
- JAVA中的类只有单继承,没有多继承。
- 继承是类和类之间的一种关系。除此之外,类和类直接的关系还有依赖、组合、聚合等。
- 继承关系的两个类,一个为子类(派生类),一个为父类(基类)。子类继承父类,使用关键字extends来表示。
- 子类和父类之间,从意义上讲应该具有"is a"的关系。
- object类
- super
- 方法重写
- super关键字,调用父类里面的方法和属性。
- 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();
}
}

子类
package com.encapsulation.demo01;
//派生类
public class Teacher extends Person {
}
注意点
- super调用父类的构造方法,必须在构造方法的第一个
- super 必须只能出现在子类的方法或构造方法中
- super 和 this 不能同时调用构造方法
Vs this
- 代表的对象不同:
- this: 本身调用者这个对象
- super: 代表父类对象的应用
- 前提
- this:没有继承也可以使用
- super: 只能在继承条件才可以使用
- 构造方法
- this(); 本类的构造
- super; 父类的构造
知识点
-
类里面的构造方法和普通方法的区别
-
构造方法有无参构造和有参构造,每个类必须有一个无参构造,否则会无法实例化
-
多个有参构造会进行方法重载,必须每个参数类型不一致
-
构造方法名和类名一致
-
// 有参构造方法 方法的重载必须参数类型不一样 public Student(String name) { System.out.println(name); } // 有参构造方法 public Student(int age) { } Student student = new Student(12); // 这里根据数据类型来决定执行哪个有参构造
-
总结
- 父类私有属性和方法无法继承到子类
- 子类通过super调用父类的方法和属性
- 父类和子类都有无参构造的时候,new 子类 (此时子类默认先调用父类无参构造,在执行自己的默认构造),默认调用super();

浙公网安备 33010602011771号