【JAVASE】抽象类和接口及其抽象类和接口的区别
在Java中,抽象类和接口都用于定义抽象行为,但它们之间有显著的不同。
抽象类:
- 可以包含抽象方法和非抽象方法。
- 一个类只能继承一个抽象类。
- 抽象类中的抽象方法必须在子类中被实现。
- 抽象类可以有构造函数。
接口:
- 只能包含抽象方法。
- 一个类可以实现多个接口。
- 接口中的所有方法都必须在实现类中被实现。
- 接口不能有构造函数。
区别概要:
- 继承与实现:抽象类是类的继承,接口是行为的实现。
- 抽象方法实现:抽象类中的抽象方法必须被实现,而接口中的方法不必实现。
- 多继承:Java中类不支持多继承,但可以实现多个接口。
- 设计理念:抽象类强调的是"is-a"关系,接口强调的是"like-a"关系。
- 默认方法实现:接口可以提供默认方法实现(Java 8+),抽象类不能。
- 私有方法:接口中不能有私有方法,抽象类可以有私有方法。
代码示例:
抽象类:
public abstract class Animal {
public abstract void makeSound();
public void sleep() {
System.out.println("Zzz");
}
}
public class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("Woof");
}
}
接口:
public interface Speaker {
void speak();
}
public class Person implements Speaker {
@Override
public void speak() {
System.out.println("Hello");
}
}
评论已关闭