자바에서 추상 클래스와 추상 메소드란? 언제 사용해야 하나요? 튜토리얼 첨부

게시 됨: 2019-09-12
java-abstract-class-tutorial-by-crunchify

며칠 전에 Java의 인터페이스란 무엇이며 어떻게 사용되는가에 대한 기본 Java 기초에 대한 기사를 작성했습니다. 이 튜토리얼은 또한 기본 Java 기본 " Abstract Class and Abstract Method "와 관련이 있습니다.

추상 클래스 란 무엇입니까?

먼저 Abstract 클래스에 대한 이해를 시작하고 예제를 살펴보겠습니다.

  • 추상 클래스abstract 으로 선언된 클래스입니다.
  • 추상 클래스는 인스턴스화할 수 없습니다.
  • 추상 클래스는 하위 클래스로 분류할 수 있습니다.
  • 추상 메서드를 포함하거나 포함하지 않을 수 있습니다.
  • 추상 클래스가 subclassed 클래스는 일반적으로 상위 클래스의 모든 추상 메서드에 대한 구현을 제공합니다.
  • 하위 클래스가 구현을 제공하지 않으면 하위 클래스도 abstract 로 선언되어야 합니다.

이것은 매우 basic Java Interview Question 입니다. 아마 면접 중에 받는 1 st Java Interview Question 것입니다.

추상 메서드를 추가하지 않고 추상 클래스를 정의할 수 있습니까?

물론 예. 클래스 추상을 선언한다는 것은 자체적으로 인스턴스화하는 것을 허용하지 않는다는 것을 의미합니다. 비 추상 클래스에는 추상 메서드가 있을 수 없습니다.

추상 방법이란 무엇입니까?

  • abstract method 는 구현 없이 선언된 메서드입니다.
  • 메서드 서명만 있습니다.

예제부터 시작하겠습니다. 문제 설명:

  1. checkResult() 라는 추상 메서드가 하나 있는 CrunchifyExam.java 클래스를 만듭니다.
  2. Abstract 클래스 Crunchify1stSchoolExamResult.java 를 확장하는 Crunchify1stSchoolExamResult.java 클래스를 CrunchifyExam.java
  3. Abstract 클래스 Crunchify2ndSchoolExamResult.java 를 확장하는 Crunchify2ndSchoolExamResult.java 클래스를 CrunchifyExam.java
  4. 이제 위의 두 클래스 모두 checkResult() 메서드에 대한 구현을 제공해야 합니다.
  5. 두 학교 모두 사용자가 PASSED or FAILED 인지 확인하기 위해 자체적으로 다른 procedure 또는 number of checks 를 가질 수 있으며, 각자의 checkResult() 구현을 자유롭게 사용할 수 있습니다.

Crunchify1stSchoolExamResult.java에서 CrunchifyExam 클래스를 확장하면 Eclipse는 Crunchify1stSchoolExamResult.java 에 언급된 추상 메서드를 구현하라는 메시지를 CrunchifyExam.java 합니다.

추상 메소드 구현 - Crunchify 튜토리얼

Crunchify1 st SchoolExamResult.java

Crunchify2nd SchoolExamResult.java

Eclipse 콘솔 결과:

Crunchify2ndSchoolExamResult.java 를 마우스 오른쪽 버튼으로 클릭하고 Java Application 으로 실행하면 아래 결과를 볼 수 있습니다.

이제 질문이 있을 수 있습니다.

Abstract MethodClass 를 사용하고 CrunchifyExam을 인터페이스로 사용하는 대신 인터페이스를 사용할 수 없는 이유는 무엇입니까?

Sure you could . 하지만 getExamTime (), setExamTime (), getExamTime (), setExamTime () 메서드도 구현해야 합니다.

추상 클래스를 사용하여 다른(비추상) 메서드의 구현을 상속할 수 있습니다. 인터페이스로는 그렇게 cannot provide .

Java에서 추상 및 최종 클래스를 생성할 수 있습니까?

  • 추상과 최종은 상호 배타적인 개념입니다.
  • 따라서 대답은 NO입니다. Java에서 추상 클래스나 메서드를 최종적으로 만들 수 없습니다.
  • 최종 클래스는 완전한 클래스이며 더 이상 확장할 수 없습니다.
  • 추상 클래스는 불완전 클래스라고 하며 다른 구체적인 클래스에 의해서만 확장될 수 있으며 모든 추상 메소드를 구현해야 합니다.
  • 또한 최종 클래스에 추상 메서드를 가질 수도 없고 방법이 없습니다.

Java의 여러 추상 클래스에서 상속할 수 있습니까?

  • Java는 다중 상속을 지원하지 않습니다.
  • Java에서는 단일 클래스만 확장할 수 있습니다.
  • Java에서는 많은 소스에서 인터페이스를 구현할 수 있습니다.