继承
多个类中存在相同属性和行为时,将这些内容抽取到单独的一个类中,那么,多个类中无需再定义这些属性和行为,只需要和抽取出来的类构成继承关系
(java中如果一个类没有使用extends关键字显示的继承其他类,那么这个类默认继承自Object类,Object类是java类体系中最顶级的一个类,所有类都直接或间接地继承Object类)
如何使用继承
通过extends关键字,使类B继承类A
[修饰符]class 类A{
……
}
[修饰符]class 类B extends 类A{
……
}
类B,称为子类/派生类
类A,称为父类/基类
实例:
下面是父类的代码
public class Person {
private String name;
private int id;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
下面是子类的代码
import day3.demo1.Person;
public class Student extends Person {
}
看下面这张图片,我们的Student类中是没有定义任何成员变量和方法的,但是,因为Student类继承了Person类,所以这里会自动弹出Person类(父类)中的方法
(如果权限不允许依然无法调用,子类不能直接访问父类中私有的(private)的成员变量和方法,这里没有出现name,id,age是因为这三个成员变量在父类中的权限是私有的,而这些方法是公共的,所以可以被访问)
继承的好处
继承的出现减少了代码冗余,提高了代码的复用性
继承的出现,更有利于功能的扩展
继承的出现让类与类之间产生了is--a的关系,为多态的使用提供了前提
什么时候使用继承
符合is--a关系的设计,可以使用继承
继承的细节
子类会继承父类所有的实例变量和实例方法
子类不能直接访问父类中私有的(private)的成员变量和方法
在java中,继承的关键字是"extends",表示子类是对父类的扩展
java支持多层继承(继承体系)
一个父类可以同时拥有多个子类
java只支持单继承,不支持多重继承(一个类不能继承多个类,只支持继承一个类)
继承体系
下面是新创建的一个类,继承Student类
package day3.demo1_test;
public class Student1 extends Student{
}
看下面的图片,因为Student1类继承Student类,而Student类又继承了Person类,所以可以访问Person类的方法