>  기사  >  Java  >  Java에서 인터페이스와 추상 클래스의 역할과 디자인 원칙

Java에서 인터페이스와 추상 클래스의 역할과 디자인 원칙

PHPz
PHPz원래의
2024-05-02 16:48:01739검색

인터페이스 및 추상 클래스의 역할: 인터페이스: 필요한 동작을 정의하고 구현 클래스가 특정 사양을 준수하도록 합니다. 추상 클래스: 공통 동작을 정의하고, 하위 클래스가 이를 상속하도록 강제하고, 부분 구현을 제공하고, 하위 클래스가 특정 동작을 사용자 정의할 수 있도록 허용합니다. 디자인 원칙: 인터페이스: 작고 집중적으로 유지하여 필요한 동작을 정의합니다. 추상 클래스: 추상 메소드만 선언하고 일반적인 동작을 달성하기 위한 구체적인 메소드를 제공합니다. 예: 모양 클래스 계층 구조에서 Shape 인터페이스는 면적을 얻는 동작을 정의하고 AbstractShape 추상 클래스는 너비 및 높이 필드를 제공하며 Rectangle 및 Circle 클래스는 추상 클래스를 상속하고 특정 모양에 대한 면적 계산 방법을 제공합니다. .

Java 中接口和抽象类的作用和设计原则

Java

Interfaces

  • 에서 인터페이스와 추상 클래스의 역할과 디자인 원칙은 메소드를 정의하지만 구현을 제공하지는 않습니다.
  • 일련의 공개 상수를 선언하세요.
  • 이를 구현하는 클래스가 모든 메서드의 구현을 제공하도록 강제합니다.
  • 구문: ​​공용 인터페이스 InterfaceName { ... }public interface InterfaceName { ... }

抽象类

  • 定义方法,可以是抽象方法或具体方法。
  • 抽象方法没有实现,必须由子类实现。
  • 允许字段和构造函数。
  • 语法:public abstract class AbstractClassName { ... }

作用

接口

  • 实现解耦,允许类专注于自己的职责。
  • 促进模块化和可扩展性,使组件可以轻松地互换和扩展。
  • 定义行为合同,强制实现类遵守特定规范。

抽象类

  • 定义通用行为并强制子类继承它。
  • 提供部分实现,减少子类中的重复代码。
  • 提供钩子方法,允许子类定制特定行为。

设计原则

接口

  • 仅定义必须的行为。
  • 方法名称应清晰简明,表示预期行为。
  • 接口应该保持小而专注。

抽象类

  • 仅声明抽象方法,定义公共行为。
  • 提供具体方法以实现通用行为。
  • 考虑使用抽象类而不是接口,当需要共享实现时。

实战案例

考虑一个简单的形状类层次结构:

**`

Abstract class

메서드를 정의합니다. 추상 메서드 또는 구체적인 메서드가 될 수 있습니다.

추상 메서드는 구현되지 않으며 서브클래스로 구현해야 합니다.

필드와 생성자를 허용합니다.

구문: ​​public abstract class AbstractClassName { ... }

Function

Interface

🎜🎜🎜은 분리를 달성하여 클래스가 자신의 책임에 집중할 수 있도록 합니다. 🎜🎜구성 요소를 쉽게 교체하고 확장할 수 있도록 모듈성과 확장성을 촉진합니다. 🎜🎜구현 클래스가 특정 사양을 준수하도록 강제하는 동작 계약을 정의합니다. 🎜🎜🎜추상 클래스🎜🎜🎜🎜공통 동작을 정의하고 하위 클래스가 이를 상속하도록 강제합니다. 🎜🎜하위 클래스에서 중복 코드를 줄이기 위해 부분 구현을 제공합니다. 🎜🎜하위 클래스가 특정 동작을 맞춤 설정할 수 있도록 후크 메서드를 제공하세요. 🎜🎜🎜디자인 원칙🎜🎜🎜🎜인터페이스🎜🎜🎜🎜필요한 동작만 정의하세요. 🎜🎜메서드 이름은 명확하고 간결해야 하며 예상되는 동작을 나타내야 합니다. 🎜🎜인터페이스는 작고 집중적으로 유지되어야 합니다. 🎜🎜🎜추상 클래스🎜🎜🎜🎜추상 메소드만 선언하고 공개 동작을 정의합니다. 🎜🎜일반적인 동작을 구현하기 위한 구체적인 방법을 제공하세요. 🎜🎜공유 구현이 필요한 경우 인터페이스 대신 추상 클래스 사용을 고려하세요. 🎜🎜🎜실용 사례🎜🎜🎜간단한 모양 클래스 계층 구조를 고려하세요. 🎜🎜**`java🎜interface Shape {🎜
double getArea();
🎜}🎜🎜추상 클래스 AbstractShape는 Shape { 🎜
protected double width;
protected double height;

public AbstractShape(double width, double height) {
    this.width = width;
    this.height = height;
}

public double getWidth() {
    return width;
}

public double getHeight() {
    return height;
}
를 구현합니다. 🎜}🎜🎜class Rectangle은 AbstractShape를 확장합니다. {🎜
public Rectangle(double width, double height) {
    super(width, height);
}

@Override
public double getArea() {
    return width * height;
}
🎜}🎜🎜class Circle은 AbstractShape를 확장합니다. {🎜
public Circle(double radius) {
    super(radius, radius);
}

@Override
public double getArea() {
    return Math.PI * width * width;
}
🎜}🎜🎜public 클래스 Main {🎜
public static void main(String[] args) {
    Shape rectangle = new Rectangle(4, 5);
    Shape circle = new Circle(3);

    System.out.println("Rectangle area: " + rectangle.getArea());
    System.out.println("Circle area: " + circle.getArea());
}
🎜}🎜
在这个例子中:

* `Shape` 接口定义了一个通用行为:获取形状面积。
* `AbstractShape` 抽象类提供了通用行为的通用实现,例如宽度和高度字段。
* `Rectangle` 和 `Circle` 类通过继承 `AbstractShape` 类来扩展形状类层次结构,并提供特定形状的具体方法来计算面积。

위 내용은 Java에서 인터페이스와 추상 클래스의 역할과 디자인 원칙의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.