자바 추상화
추상 클래스 및 메서드
데이터 추상화 는 특정 세부 사항을 숨기고 필수 정보만 사용자에게 보여주는 프로세스입니다. 추상화는 추상 클래스 나
인터페이스
를 사용하여 달성할 수 있습니다 (다음 장에서 자세히 설명합니다).
키워드 는 abstract
클래스 및 메서드에 사용되는 비접근 한정자입니다.
- 추상 클래스: 개체를 생성하는 데 사용할 수 없는 제한된 클래스입니다(접근하려면 다른 클래스에서 상속되어야 함).
- 추상 메서드: 추상 클래스에서만 사용할 수 있으며 본문이 없습니다. 본문은 (에서 상속됨) 하위 클래스에 의해 제공됩니다.
추상 클래스는 추상 메서드와 일반 메서드를 모두 가질 수 있습니다.
abstract class Animal {
public abstract void animalSound();
public void sleep() {
System.out.println("Zzz");
}
}
위의 예에서 Animal 클래스의 객체를 생성하는 것은 불가능합니다.
Animal myObj = new Animal(); // will generate an error
추상 클래스에 액세스하려면 다른 클래스에서 상속되어야 합니다. 다형성 장 에서 사용한 Animal 클래스를 추상 클래스로 변환해 보겠습니다 .
상속 장 에서 우리 extends
는 클래스에서 상속하기 위해 키워드를 사용 한다는 것을 기억하십시오 .
예시
// Abstract class
abstract class Animal {
// Abstract method (does not have a body)
public abstract void animalSound();
// Regular method
public void sleep() {
System.out.println("Zzz");
}
}
// Subclass (inherit from Animal)
class Pig extends Animal {
public void animalSound() {
// The body of animalSound() is provided here
System.out.println("The pig says: wee wee");
}
}
class Main {
public static void main(String[] args) {
Pig myPig = new Pig(); // Create a Pig object
myPig.animalSound();
myPig.sleep();
}
}
추상 클래스와 메서드를 사용하는 이유와 시기는?
보안을 유지하려면 특정 세부 정보를 숨기고 개체의 중요한 세부 정보만 표시합니다.
참고: 추상화는 Interfaces 로도 달성할 수 있습니다 . 이에 대해서는 다음 장에서 자세히 알아볼 것입니다.