以下是?extends
?和?implements
?在Java代码中的区别和示例:
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(); // 输出 "狗在叫"
}
}
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
) 中所有声明方法的具体实现。同时,类还可以拥有自己的额外方法。