extends 和 implements

发布时间:2024年01月24日

以下是?extends?和?implements?在Java代码中的区别和示例:

示例1:使用?extends?实现类继承

// 定义一个父类 Animal
public class Animal {
    public void eat() {
        System.out.println("动物在吃东西");
    }
    
    public void sleep() {
        System.out.println("动物在睡觉");
    }
}

// 定义一个子类 Dog 继承自 Animal 类
public class Dog extends Animal {
    // 子类重写了父类的 eat 方法
    @Override
    public void eat() {
        System.out.println("狗正在吃骨头");
    }

    // 子类新增一个 bark 方法
    public void bark() {
        System.out.println("狗在叫");
    }
}

// 使用时,Dog 类可以调用父类 Animal 的方法以及它自己的方法
public class Main {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.eat();  // 输出 "狗正在吃骨头"
        dog.sleep(); // 输出 "动物在睡觉"(从 Animal 类继承)
        dog.bark();  // 输出 "狗在叫"
    }
}

示例2:使用?implements?实现接口

// 定义一个接口 Flyer,包含两个抽象方法
public interface Flyer {
    void takeOff();
    void land();
}

// 定义一个类 Bird,实现 Flyer 接口
public class Bird implements Flyer {
    @Override
    public void takeOff() {
        System.out.println("鸟儿起飞了");
    }

    @Override
    public void land() {
        System.out.println("鸟儿降落了");
    }

    // Bird 类有自己的行为方法
    public void chirp() {
        System.out.println("鸟儿在鸣叫");
    }
}

// 使用时,Bird 类作为 Flyer 接口的实现类,必须实现接口的所有方法
public class Main {
    public static void main(String[] args) {
        Bird bird = new Bird();
        bird.takeOff();   // 输出 "鸟儿起飞了"
        bird.land();     // 输出 "鸟儿降落了"
        bird.chirp();    // 输出 "鸟儿在鸣叫"
    }
}

通过以上示例可以看出:

  • 当使用?extends?关键字时,子类 (Dog) 继承了父类 (Animal) 的属性和方法,并且可以重写父类的方法。
  • 当使用?implements?关键字时,类 (Bird) 必须提供接口 (Flyer) 中所有声明方法的具体实现。同时,类还可以拥有自己的额外方法。
文章来源:https://blog.csdn.net/m0_47999208/article/details/135827839
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。