Day33--继承
Day33--继承
继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模。
“extends”的意思是“扩展”,子类是父类的扩展。
JAVA 中类只有单继承,没有多继承。可以理解为,一个爸爸可以有多个儿子,但是一个儿子只能有一个爸爸
继承是类和类之间的一种关系。除此之外,类和类之间的关系还有依赖、组合、聚合等。
继承关系的两个类:一个为子类(派生类),一个为父类(基类)。子类继承父类,使用关键字“extends”来表示。
子类和父类之间,从意义上讲应该具有“is a”的关系。
object 类、
super
方法重写。
示例:
创建了Person类 人
package com.liu.oop.demo05;
//Person 人
public class Person {
}
再创建了Student类
extends Person 继承了Person
package com.liu.oop.demo05;
//学生 is 人.
public class Student extends Person{
}
同样,创建了Teacher
package com.liu.oop.demo05;
//老师 is 人
public class Teacher extends Person{
}
当在父类创建了一个public的方法say时
package com.liu.oop.demo05;
//Person 人
public class Person {
public void say(){
System.out.println("说了一句话");
}
}
是否能通过子类引用这个方法?
在Application里面,为Student实例化,然后引用方法say
package com.liu.oop;
import com.liu.oop.demo05.Student;
public class Application {
public static void main(String[] args) {
Student student = new Student();
student.say();//说了一句话
}
}
可见,子类继承父类,就会拥有父类的全部public方法
如果,父类的方法是private呢?
当我们将方法改为private时
package com.liu.oop.demo05;
//Person 人
public class Person {
private void say(){
System.out.println("说了一句话");
}
}
在Application里面引用的方法say报错了
可见,父类修饰符为private的方法,子类是无法继承的
快捷键 Ctrl + H 打开层次结构 看到父类与子类的关系
光标在父类,可以看到所有的子类
好奇怪,怎么Person上面还有一个Object类?
当我们把Person类的全部属性和方法删除之后,发现,在Application类里面,Person还能使用好多方法
在Java里面,所有的类默认都是Object类的子类