추상 클래스는 다른 클래스의 청사진과 같습니다. 추상 클래스에서 직접 객체를 만들 수는 없습니다. 대신, 이를 기반으로 세부 사항을 채울 수 있는 다른 클래스의 기초로 사용합니다.
추상 클래스는 공유 기능이 있는 일반적인 개념을 정의하고 상황에 따라 달라질 수 있는 특정 세부 사항을 위한 공간을 남겨두고 싶을 때 유용합니다. 예를 들어, 먹거나 자는 것과 같은 공통적인 특징을 포함하는 '동물'이라는 일반적인 개념이 있을 수 있지만 동물마다 먹거나 자는 방식이 다를 수 있습니다.
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() 메서드를 그대로 상속합니다.
추상 클래스는 모든 하위 클래스에서 공유해야 하는 일부 메서드가 있을 때 유용하지만 일부 메서드를 해당 하위 클래스에서 정의하도록 강제하려는 경우도 있습니다.
public abstract class Bird extends Animal { void move() { System.out.println("The bird flies."); } }
이제 Bird를 확장하는 모든 클래스는 Animal의 move() 메서드와 sleep() 메서드를 모두 상속하지만 여전히 makeSound()를 구현해야 합니다.
Java의 추상 클래스는 관련 클래스에 대한 공유 기반을 생성하는 동시에 해당 클래스가 특정 세부 사항을 정의할 공간을 남겨두는 방법을 제공합니다. 공유 기능과 유연성 사이의 균형을 유지하여 코드를 강력하고 재사용 가능하게 만듭니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3