>  기사  >  Java  >  Java의 추상 클래스 – 분석

Java의 추상 클래스 – 분석

WBOY
WBOY원래의
2024-09-04 06:46:32507검색

Abstract Classes in Java – Breaking It Down

추상클래스란 무엇인가요?

추상 클래스는 다른 클래스의 청사진과 같습니다. 추상 클래스에서 직접 객체를 만들 수는 없습니다. 대신 이를 기반으로 세부 사항을 작성할 수 있는 다른 수업의 기초로 사용합니다.

추상 클래스를 사용하는 이유

추상 클래스는 몇 가지 공유 기능이 있는 일반적인 개념을 정의하면서도 상황에 따라 달라질 수 있는 특정 세부정보를 위한 공간을 남겨두고 싶을 때 유용합니다. 예를 들어, 먹고 자고 같은 공통적인 특징을 포함하는 '동물'이라는 일반적인 개념이 있을 수 있지만 동물마다 먹고 자는 방식이 다를 수 있습니다.

추상 클래스 만들기

Animal이라는 추상 클래스를 만드는 방법은 다음과 같습니다.

public abstract class Animal {
    abstract void makeSound();  // Abstract method, no body

    void sleep() {
        System.out.println("This animal sleeps.");
    }
}

이 예에서 makeSound()는 추상 메서드입니다. 즉, 아직 본문이 없습니다. 그러나 sleep() 메소드는 완전히 구현됩니다.

추상 클래스 확장

이제 Animal 클래스를 확장하는 몇 가지 클래스를 만들어 보겠습니다.

public class Dog extends Animal {
    void makeSound() {
        System.out.println("The dog barks.");
    }
}

public class Cat extends Animal {
    void makeSound() {
        System.out.println("The cat meows.");
    }
}

Dog 및 Cat 클래스는 모두 자체 버전의 makeSound() 메서드를 제공해야 하지만 sleep() 메서드를 그대로 상속합니다.

추상 클래스와 인터페이스

  • 상속: 클래스는 하나의 추상 클래스만 확장할 수 있지만 여러 인터페이스를 구현할 수 있습니다.
  • 메서드 구현: 추상 클래스는 추상 메서드(본문 없음)와 완전히 구현된 메서드를 모두 가질 수 있습니다. 인터페이스(Java 8 이전)에는 추상 메소드만 있을 수 있습니다.
  • 생성자: 추상 클래스는 생성자를 가질 수 있지만 인터페이스는 가질 수 없습니다.

일부 구현

추상 클래스는 모든 하위 클래스에서 공유해야 하는 일부 메소드가 있지만 해당 하위 클래스에서 일부 메소드를 강제로 정의하려는 경우에 유용합니다.

public abstract class Bird extends Animal {
    void move() {
        System.out.println("The bird flies.");
    }
}

이제 Bird를 확장하는 모든 클래스는 Animal의 move() 메서드와 sleep() 메서드를 모두 상속하지만 여전히 makeSound()를 구현해야 합니다.

도전: 직접 시도해 보세요!

  1. 추상 메서드 startEngine()을 사용하여 Vehicle이라는 추상 클래스를 만듭니다.
  2. Vehicle을 확장하고 startEngine() 메서드를 구현하는 Car와 Motorcycle라는 두 개의 클래스를 만듭니다.
  3. stopEngine()과 같은 일반적인 메소드를 Vehicle에 추가하고 하위 클래스에서 어떻게 작동하는지 확인하세요.

결론

Java의 추상 클래스는 관련 클래스에 대한 공유 기반을 생성하는 동시에 해당 클래스가 특정 세부 사항을 정의할 공간을 남겨두는 방법을 제공합니다. 공유 기능과 유연성 사이의 균형을 유지하여 코드를 강력하고 재사용 가능하게 만듭니다.

위 내용은 Java의 추상 클래스 – 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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