继承
-
继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模
-
extends的意思是 “扩展” 。子类是父类的扩展。 -
JAVA中类只有单继承,没有多继承 -
继承是类和类之间的一种关系。除此之外,类和类之间的关系还有依赖、组合、聚合等
-
继承关系的两个类,一个为子类 (派生类),一个为父类 (基类)。子类继承父类,使用关键字
extends来表示 -
子类和父类之间,从意义上讲应该具有
is a的关系
示例
main 方法
public class Application {
public static void main(String[] args) {
Student_02 student = new Student_02();
student.say();
}
}
父类 Person
package Oop.Demo_02;
//Person 人 父类
public class Person_01 {
public void say() {
System.out.println("说了一句话");
}
}
子类 Student
package Oop.Demo_02;
//学生 is 人 派生类 子类
public class Student_02 extends Person_01 {
}
解释
以上示例中 Student 类没有任何方法,但依旧输出了 说了一句话 ,说明 Student 完全继承了父类 Person
子类能继承父类的全部方法
mian 方法
public class Application {
public static void main(String[] args) {
Student_02 student = new Student_02();
student.say();
System.out.println(student.money);
}
}
父类 Person
package Oop.Demo_02;
//Person 人 父类
public class Person_01 {
public int money = 100;
public void say() {
System.out.println("说了一句话");
}
}
子类 Student
package Oop.Demo_02;
//学生 is 人 派生类 子类
public class Student_02 extends Person_01 {
}
解释
当父类 Person 声明并赋值一个变量 money 之后,子类 Student 同样继承了父类的变量 money 与其数值
注意
私有的方法无法被继承
main 方法
public class Application {
public static void main(String[] args) {
Student_02 student = new Student_02();
student.say();
System.out.println(student.money);
}
}
父类 Person
package Oop.Demo_02;
//Person 人 父类
public class Person_01 {
private int money = 100;
private void say() {
System.out.println("说了一句话");
}
}
子类 Student
package Oop.Demo_02;
//学生 is 人 派生类 子类
public class Student_02 extends Person_01 {
}
解释
会发现 main 方法中的调用报错,因为父类 Person 中的方法被改为私有,无法被子类 Student 继承
//顺序
public
protected
defoult //默认,如果不写默认为 defoult
private
但是可以通过方法来修改 (通过封装方法)
封装方法
main 方法
public class Application {
public static void main(String[] args) {
Student_02 student = new Student_02();
student.say();
System.out.println(student.getMoney());
}
}
父类 Person
package Oop.Demo_02;
//Person 人 父类
public class Person_01 {
private int money = 100;
public void say() {
System.out.println("说了一句话");
}
public int getMoney() {
return money;
}
public void setMoney(int money) {
this.money = money;
}
}
子类 Student
package Oop.Demo_02;
//学生 is 人 派生类 子类
public class Student_02 extends Person_01 {
}
如果方法私有,可以通过封装方法来调用变量
建议
- 可以通过
ctrl+H来查看当前类的继承树
注意
在 JAVA 中,所有的类都直接或间接继承 Objet 类