Java继承

继承

Java继承是面向对象的最显著的一个特征.继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力
JAVA不支持多继承,单继承使JAVA的继承关系很简单,一个类只能有一个父类,易于管理程序
比如:可以先定义一个类叫车,车有以下属性:车体大小,颜色,方向盘,轮胎,而又由车这个类派生出轿车和卡车两个类,为轿车添加一个小后备箱,而为卡车添加一个大货箱.
继承所表达的就是一种对象类之间的相交关系,它使得某类对象可以继承另外一类对象的数据成员和成员方法,若类B继承类A,则属于B的对象便具有类A的全部或部分性质(数据属性)和功能(操作),我们称被继承的类A为父类,而称继承类B为A的子类.

特点

继承关系是传递的.若类C继承类B,类B继承类A(多层继承),则类C既有从类B那里继承下来的属性与方法,也有从类A那里继承下来的属性与方法,还可以有自己新定义的属性和方法.继承来的属性和方法尽管是隐式的,但仍是类C的属性和方法.继承是在一些比较一般的类的基础上构造,建立和扩充新类的最有效的手段.
实例:父类

public class Person {
    private int age;
    private String name;

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Person(int age, String name) {
        this.age = age;
        this.name = name;
    }

    public Person() {
        System.out.println("Person init");
    }

    public void eat(){

    }
    public static void run(){
        System.out.println("run");
    }

}

实例:子类

public class Teacher extends Person{
    private int number;
    public Teacher() {
        System.out.println("Teacher init");
    }

    public Teacher(int age, String name, int number) {
        super(age, name);
        this.number = number;

    }
@Override
    public void eat() {
        super.eat();
        System.out.println(getName());
    }
    public static void run(){
        System.out.println( "teacher run");
    }

}

例子:使用类

public class Main {

    public static void main(String[] args) {
    // write your code here
        Teacher teacher = new Teacher(18,"老师",99);
        teacher.eat();
        Teacher.run();
        System.out.println(teacher.haha);
    }
}

继承的关键字extends
类的继承是通过关键字extends来实现,类只能单一继承 子类中就是继承父类里的变量和方法 父类的构造凼数没有被继承,这里所说的意思是指在实例化子类的对象时,在new后面不能调用父类的构造凼数,但是可以在子类的构造凼数里使用super来调用父类的构造凼数,如果没有写super这句调用,子类会自动调用父类无参的构造凼数(但要确保无参构造凼数存在,否则会出错) 可以new一个子类的对象赋给一个父类的变量,当通过这个父类的变量执行方法时,其实是执行的子类的方法

你可能感兴趣的:(Java继承)