Person类

  1. public class Person {
  2. String name;
  3. int age;
  4. public Person(){
  5. }
  6. public Person(String name, int age) {
  7. this.name = name;
  8. this.age = age;
  9. }
  10. public void eat(){
  11. System.out.println("吃饭");
  12. }
  13. public void sleep(){
  14. System.out.println("睡觉");
  15. }
  16. }

Student类

  1. public class Student {
  2. String name;
  3. int age;
  4. String major;
  5. public Student(){
  6. }
  7. public Student(String name, int age, String major) {
  8. this.name = name;
  9. this.age = age;
  10. this.major = major;
  11. }
  12. public void eat(){
  13. System.out.println("吃饭");
  14. }
  15. public void sleep(){
  16. System.out.println("睡觉");
  17. }
  18. public void study(){
  19. System.out.println("学习");
  20. }
  21. }
  • 可以发现,两个类之间明显方法重复

Student继承Person类

  1. public class Student extends Person{
  2. String major;
  3. public Student(){
  4. }
  5. public Student(String name, int age, String major) {
  6. this.name = name;
  7. this.age = age;
  8. this.major = major;
  9. }
  10. public void study(){
  11. System.out.println("学习");
  12. }
  13. }

继承

优点

  • 减少代码冗余
  • 方便扩展
  • 为多态性的使用提供了前提

继承的格式

  • class A extends B{}
  • A:子类、派生类、subclass
  • B:父类、超类、基类、superclass
  • 体现:一旦子类A继承了父类B,子类A就获取了父类B中声明的结构:属性、方法

继承的规则

  • 子类不能直接访问父类中私有的(private)的成员变量和方法
  • 父类中声明为 private 的属性或方法,子类继承父类,依然获取了父类中私有的结构。只是因为封装性的影响,使得子类不能直接调用父类的结构
  • 子类继承父类以后,可以声明自己特有的属性和方法,实现功能的扩展

    Java中关于继承的规定

  • 一个类可以被多个子类继承

  • Java只支持单继承和多层继承,不允许多重继承
  • 子父类是相对的概念,多层继承
  • 子类直接继承:直接父类。间接继承:间接父类
  • 子类继承父类后,就获取了直接父类以及所以间接父类中声明的属性和方法

    Object类

  • 如果没有显式的声明一个类的父类的话,则此类继承于 java.lang.object 类

  • 所有的类都直接或者间接继承 java.lang.object 类