例
Person类
public class Person {String name;int age;public Person(){}public Person(String name, int age) {this.name = name;this.age = age;}public void eat(){System.out.println("吃饭");}public void sleep(){System.out.println("睡觉");}}
Student类
public class Student {String name;int age;String major;public Student(){}public Student(String name, int age, String major) {this.name = name;this.age = age;this.major = major;}public void eat(){System.out.println("吃饭");}public void sleep(){System.out.println("睡觉");}public void study(){System.out.println("学习");}}
- 可以发现,两个类之间明显方法重复
Student继承Person类
public class Student extends Person{String major;public Student(){}public Student(String name, int age, String major) {this.name = name;this.age = age;this.major = major;}public void study(){System.out.println("学习");}}
继承
优点
- 减少代码冗余
- 方便扩展
- 为多态性的使用提供了前提
继承的格式
class A extends B{}- A:子类、派生类、subclass
- B:父类、超类、基类、superclass
- 体现:一旦子类A继承了父类B,子类A就获取了父类B中声明的结构:属性、方法
继承的规则
- 子类不能直接访问父类中私有的(private)的成员变量和方法
- 父类中声明为 private 的属性或方法,子类继承父类,依然获取了父类中私有的结构。只是因为封装性的影响,使得子类不能直接调用父类的结构
子类继承父类以后,可以声明自己特有的属性和方法,实现功能的扩展
Java中关于继承的规定
一个类可以被多个子类继承
- Java只支持单继承和多层继承,不允许多重继承
- 子父类是相对的概念,多层继承
- 子类直接继承:直接父类。间接继承:间接父类
子类继承父类后,就获取了直接父类以及所以间接父类中声明的属性和方法
Object类
如果没有显式的声明一个类的父类的话,则此类继承于 java.lang.object 类
- 所有的类都直接或者间接继承 java.lang.object 类
