java笔记5

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();
    }
}

posted @ 2024-08-06 09:32  cj睡不醒  阅读(28)  评论(1)    收藏  举报