-
区别:
a. 继承是指一个类从另一个类继承属性和方法,它建立了类之间的父子关系。父类和子类是继承关系,类似于数学中的包含于被包含关系;可以将接口看作一份合同或协议,而类实现接口则是承诺遵守这份合同或协议,需要提供具体的方法实现。接口定义了一组规范,通过类实现接口,可以使得不同的类根据相同的规范进行设计和实现,提高代码的灵活性和可复用性。
b. 类之间的继承关系是单一继承,即一个类只能继承一个父类;而一个类可以实现多个接口。
c. 继承关系中,子类可以继承父类的属性和方法,还可以重写或增加新的方法;接口中的方法只是声明,并没有具体实现,实现接口的类需要实现接口中的方法。 -
应用场景:
a. 继承适用于那些有层次结构、具有共性特征的类,可以通过继承来实现代码复用和统一管理。例如,一个汽车类可以派生出各种具体的汽车品牌类,共享统一的特性和行为。
b. 接口适用于描述多个类共同遵守的约定或规范,用于实现类之间的解耦。例如,定义一个可以飞行的接口,让多种不同的动物类实现该接口,实现了飞行行为的抽离和统一调用。
多态是指同一个方法调用可以根据对象的不同而表现出不同的行为。多态是方法的多态。多态的三个必要条件:1继承,2方法重写,3通过父类或接口的引用指向子类或实现类的对象。而输入参数的不同是重载。
用继承实现多态代码示例
class Animal {
public void sound() {
System.out.println("动物发出叫声");
}
}
class Dog extends Animal {
public void sound() {
System.out.println("汪汪汪");
}
}
class Cat extends Animal {
public void sound() {
System.out.println("喵喵喵");
}
}
public class Main {
public static void main(String[] args) {
Animal animal1 = new Dog();
Animal animal2 = new Cat();
animal1.sound(); // 输出汪汪汪
animal2.sound(); // 输出喵喵喵
}
}
用一个代码示例来演示用接口实现多态
interface Soundable {
void sound();
}
class Dog implements Soundable {
public void sound() {
System.out.println("汪汪汪");
}
}
class Cat implements Soundable {
public void sound() {
System.out.println("喵喵喵");
}
}
public class Main {
public static void main(String[] args) {
Soundable animal1 = new Dog();
Soundable animal2 = new Cat();
animal1.sound(); // 输出汪汪汪
animal2.sound(); // 输出喵喵喵
}
}