首页 > 编程笔记 > Java笔记 阅读:16

Java继承的定义和使用(附带实例)

继承(extends)是指子类拥有父类的非私有属性和方法,使子类对象(实例)具有父类的特性和方法。父类被称为基类或超类,子类也被称为派生类。

继承是实现代码重用的有力手段,能够有效缩短开发周期、降低开发成本,实现代码的复用和层次化设计。

继承的作用有以下 2 点:
在 Java 中,继承通过使用关键字 extends 来实现。语法结构如下:
访问修饰符 class 子类名称 extends 父类名称 {
    子类成员
}

【实例 1】创建 Animal 类和 Cat 类,Animal 类作为父类,Cat 类作为子类,Animal 类的成员属性是 name,成员方法是 eat() 方法,Cat 类的成员属性是 name,成员方法是 eat() 方法和 sleep() 方法,使用继承实现,代码如下:
public class Animal {
    // 定义私有的属性:name
    private String name;

    public String getName() {
        return name;
    }

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

    // 定义成员方法:eat 方法
    public void eat() {
        System.out.println("Animal 动物吃东西");
    }
}
public class Cat extends Animal {
    @Override
    public void eat() {
        System.out.println("Cat 猫吃猫粮");
    }

    // 子类中特有的方法
    public void sleep() {
        System.out.println("猫在睡觉");
    }
}
在上述代码中,Cat 类继承了 Animal 类的 name 属性和 eat() 方法,同时又有自己特有的 sleep() 方法。通过继承,可以避免在 Cat 类中重复编写 eat() 方法的代码,实现了对代码的复用。

在继承中,成员的访问要遵循以下 2 点规则:

Java构造方法的调用顺序


【实例 2】例 1 实现了继承,现在针对同一个案例实现对构造方法的顺序调用,代码如下:
public class Animal {
    // 定义私有的属性:name
    private String name;

    // 无参构造方法
    public Animal() {
    }

    // 带参构造方法
    public Animal(String name) {
        this.name = name;
    }

    // 获取 name 属性的值
    public String getName() {
        return name;
    }

    // 设置 name 属性的值
    public void setName(String name) {
        this.name = name;
    }

    // 定义成员方法:eat 方法
    public void eat() {
        System.out.println("Animal 动物吃东西");
    }
}
public class Cat extends Animal {
    // 无参构造方法
    public Cat() {
    }

    // 带参构造方法
    public Cat(String name) {
        super(name); // 调用父类的带参构造方法
    }

    // 重写父类的 eat 方法
    @Override
    public void eat() {
        System.out.println("Cat 猫吃猫粮");
    }

    // 子类中特有的方法
    public void sleep() {
        System.out.println("猫在睡觉");
    }
}
public class TestCat {
    public static void main(String[] args) {
        Cat cat = new Cat(); // 创建 Cat 对象
        cat.eat(); // 调用 eat 方法
    }
}
在上述代码中,我们在 TestCat 类中可以看出在创建 Cat 子类的对象时,先调用的是 Animal 父类的构造方法,然后再次调用 Cat 子类的构造方法。

相关文章