추상 클래스를 사용하는 시기와 인터페이스를 사용하는 경우? 따라서 여러 유형의 파일 판독기를 원한다면 파일 읽기에 공통되는 내용을 캡슐화하는 추상 클래스를 만들 수 있습니다: 1) Java에서 C++와 마찬가지로 추상 클래스의 인스턴스를 만들 수 없으므로 추상 클래스 형식에 대한 참조를 가질 수 있습니다. Java 인터페이스의 메서드는 암시적으로 추상화되며 구현을 가질 수 없습니다. Java 추상 클래스에는 기본 동작을 구현하는 인스턴스 메서드가 있을 수 있습니다. 추상으로 메서드를 선언하는 것은 두 가지 결과가 있습니다 – 나중에 의도 된 클래스의 객체를 만들 때 암시적으로 추상 클래스의 생성자라고 합니다. 생성자가 호출될 때 해당 클래스의 개체를 만들어야 합니까? 예. 추상 클래스에는 인터페이스와 달리 생성자가 있을 수 있습니다. 그러나 인스턴스를 만들기 위해 추상 클래스를 직접 인스턴스화할 수는 없습니다. 추상 클래스 생성자의 목적 (우리는 다른 인수를 가진 여러 추상 클래스 생성자 수 있습니다)는 마찬가지로 개체 지향 프로그래밍, 추상화에서 하위 클래스 (게으른 초기화의 종류)에서 최종 변수를 초기화하는 것입니다 는 구현 세부 정보를 사용자에게 숨기는 프로세스이며 사용자에게만 기능이 제공됩니다. 즉, 사용자는 객체가 수행하는 방식 대신 수행하는 일에 대한 정보를 갖게 됩니다.

이러한 모든 시나리오는 전체 상속 기반의 Open/Closed 원칙준수의 좋은 예임을 명심해 두겠습니다. Class3가 추상 클래스2를 확장하고 추상 Class2가 추상 클래스1을 확장하는 경우 Class3는 Class1 및 Class2의 모든 추상 메서드를 구현해야 합니다. 클래스 2는 Class2도 추상적이기 때문에 Class1의 메서드를 구현할 필요가 없습니다. 추상 클래스에는 데이터 멤버, 추상 메서드, 메서드 본문(비추상 메서드), 생성자 및 main() 메서드가 있을 수 있습니다. 추상 클래스를 사용할 시기를 살펴보기 전에 2) C++와 마찬가지로 추상 클래스에 Java의 생성자가 포함될 수 있습니다. 상속된 클래스의 인스턴스가 만들어질 때 추상 클래스의 생성자가 호출됩니다. 예를 들어 다음은 유효한 Java 프로그램입니다. 추상 클래스에 액세스하려면 다른 클래스에서 상속해야 합니다. 다형성 장에서 사용한 Animal 클래스를 추상 클래스로 변환해 보겠습니다: 사람이 직원이 될 수 있지만 필연적이지 않기 때문에 사람, 직원 관계는 추상 클래스가 아닌 인터페이스로 더 잘 표현되는 것 같습니다. 한 사람은 두 가지 이상이 될 수 있으므로 관리자는 관리자 나 감독자와 같은 다른 사람이 될 수 있으므로 직원은 Employee라는 인터페이스를 구현해야합니다. 클래스에 특정 메서드를 포함 하 고 해당 메서드의 실제 구현자 클래스에 의해 결정 하려는 경우 상위 클래스에서 메서드를 추상으로 선언할 수 있습니다.

이제 인터페이스와 구체적인 클래스보다 추상 클래스를 선호해야 하는 몇 가지 일반적인 시나리오를 분석해 보겠습니다. } 예제:- 추상 및 최종 키워드를 배우려면 1 단계) 다음 코드를 편집기로 복사합니다.