JAVA继承

概述

继承,是面向对象语言的特征之一

生活中的子女继承父母拥有的所有财产

JAVA中的继承是指 子类 拥有 父类的 属性 和 方法,这是类之间的关系。

Java 只支持 单继承,也就是只有一个父类

好处

  1. 提高代码的 复用性。
  2. 类与类之间产生了关系,是 多态 的前提。

格式

通过 extends 关键字,可以声明一个子类继承一个父类,定义格式如下:

class 父类 {
...
}

class 子类 extends 父类 {
...
}

例子

public class Person {
    String name;
    int age;

    void eat(){
        System.out.println("吃");
    }
    void play(){
        System.out.println("玩");
    }
}
public class Student extends Person {

}
public class Test {
    public static void main(String[] args) {
        Student lilei=new Student();
        /*
         * 因为Student继承了Person类,那么就拥有了Person的属性、方法
         */
        lilei.age=20;
        lilei.name="李雷";
        System.out.println(lilei.age);
        System.out.println(lilei.name);
        lilei.eat();
        lilei.play();
    }
}

特点-成员变量

父子类成员变量不重名

如果子类和父类 没有重名 的成员变量,这时的访问是 没有影响 的。代码如下:

public class Student extends Person {
    String clazz;

}
public class Test {
    public static void main(String[] args) {
        Student lilei=new Student();
        /*
         * 因为Student继承了Person类,那么就拥有了Person的属性、方法
         */
        lilei.age=20;
        lilei.name="李雷";
        lilei.clazz="1班";
        System.out.println(lilei.age);
        System.out.println(lilei.name);
        System.out.println(lilei.clazz);
        lilei.eat();
        lilei.play();
    }
}

特点-成员方法

成员方法不重名

如果子类父类中 没有重名 的成员方法,调用是没有影响 的。

代码如下:

public class Student extends Person {
    String clazz;

    void study(){
        System.out.println("学习");
    }
    //子类的方法,可以访问父类的属性
    void printName(){
        System.out.println(name);
    }
}
public class Test {
    public static void main(String[] args) {
        Student lilei=new Student();
        /*
         * 因为Student继承了Person类,那么就拥有了Person的属性、方法
         */
        lilei.age=20;
        lilei.name="李雷";
        lilei.clazz="1班";
        System.out.println(lilei.age);
        System.out.println(lilei.name);
        System.out.println(lilei.clazz);
        lilei.eat();
        lilei.play();
        lilei.study();
        lilei.printName();
    }
}

特点-构造方法

  1. 构造方法的名字是与类名一致的。所以 子类是无法继承父类的构造方法
  2. 创建子类的对象时,会先调用父类的构造方法,然后调用子类的构造方法

继承的特点

Java只支持单继承

不支持多继承。

//一个类只能有一个父类,不可以有多个父类。
class C extends A{} //ok
class C extends A,B... //error

Java支持多层继承

祖、父、子、孙

class A{}
class B extends A{} 
class C extends B{}

顶层父类是 Object 类。所有的类默认继承Object,作为父类。


原文出处:/show_1EF4rcuK3OpS.html