9.抽象类与接口
抽象类
抽象类的概念
抽象类是面向对象编程中不能被实例化的一种类,它通常被用作基类,为其他类提供公共的接口或实现。
什么是抽象
抽象是将现实世界中的复杂事物简化为基本特征的过程,它关注对象的本质特征,忽略细节,只说明做什么,不说明怎么做。
为什么要抽象
- 抽象帮助我们理解和组织复杂的系统,通过定义共同的属性和行为,减少代码冗余。
抽象类的好处
- 促进代码复用。
- 提供公共的模板或蓝图。
- 支持扩展和定制。
抽象类,普通类,接口的区别
- 抽象类可以包含抽象方法和具体方法,可以有成员变量;不能被实例化。
- 普通类可以完全实现,包含具体的方法和成员变量,可以被实例化。
- 接口完全是抽象的,只包含抽象方法和默认方法,不包含成员变量;从Java 8开始,接口可以有静态方法和默认方法。
接口
接口的概念
接口定义了一组方法规范,但不实现这些方法,实现接口的类必须提供这些方法的具体实现。
什么是接口
接口是一种形式的契约,规定了实现类必须遵守的方法和行为。
为什么要接口
- 接口提供了一种机制,允许定义方法的规范而不需要实现它们,增加了代码的灵活性和可扩展性。
接口的好处
- 支持多态,不同的类可以实现同一个接口。
- 增加了代码的模块化,易于维护和扩展。
- 允许不同的类以统一的方式交互。
- 可以用于间接实现多重继承
- 接口可以使设计与实现分离
接口和多态的关系
- 接口是实现多态的一种机制。通过接口,可以引用多种实际类型的对象,而调用的具体实现取决于对象的实际类型。
- 接口允许将不同的实现细节隐藏在统一的接口之后,使得代码更加通用。
示例代码
// 抽象类的示例
abstract class Animal {
// 抽象方法,没有具体实现
public abstract void makeSound();
// 具体方法,有实现
public void breathe() {
System.out.println("This animal breathes air.");
}
}
// 接口的示例
interface Drivable {
void drive();
}
// 实现接口的类
class Car implements Drivable {
public void drive() {
System.out.println("The car is driving.");
}
}
// 使用抽象类和接口
public class Main {
public static void main(String[] args) {
// 抽象类不能被实例化
// Animal myAnimal = new Animal(); // 错误
// 继承抽象类的子类
class Dog extends Animal {
public void makeSound() {
System.out.println("Woof woof!");
}
}
Dog dog = new Dog();
dog.breathe();
dog.makeSound();
// 实现接口的Car对象
Car myCar = new Car();
myCar.drive();
}
}
标签:java,实现,void,接口,抽象,笔记,抽象类,public
From: https://www.cnblogs.com/cjsbx/p/18344499