Java에서 추상 클래스와 인터페이스의 차이점은 무엇입니까?



이 기사는 예제 프로그램의 도움으로 Java에서 추상 클래스와 인터페이스의 주요 차이점을 이해하는 데 도움이 될 것입니다.

추상 클래스와 인터페이스는 두 가지 주요 구성 요소입니다.의 . 둘 다 주로 추상화에 사용되지만 서로 매우 다르며 서로 바꿔서 사용할 수 없습니다. 이 기사에서는 Java에서 추상 클래스와 인터페이스의 차이점을 알아 보겠습니다.

이 기사에서 다루는 주제는 다음과 같습니다.





추상 클래스와 인터페이스의 차이점을 이해하려면 , 추상 클래스가 무엇이며 인터페이스가 무엇인지 알아야합니다. 자, 그것들이 무엇인지 논의하는 것으로 시작하겠습니다.

Java의 추상 클래스는 무엇입니까?

모든 프로그래밍 언어에서 추출 사용자에게 관련없는 세부 사항을 숨기고 필수적인 세부 사항에만 집중하여 효율성을 높이고 복잡성을 줄이는 것을 의미합니다. Java에서 추상화는 추상 클래스 . 추상 클래스는 하위 클래스의 공통 특성을 캡처하며 추상 메서드를 포함하거나 포함하지 않을 수 있습니다. 인스턴스화 할 수 없지만 하위 클래스에 의해 수퍼 클래스로만 사용할 수 있습니다. 다음은 추상 클래스를 보여주는 예제 프로그램입니다.



노트 :추상 방법 , 제자리에 구현되지 않고불완전 성 수업 .

package MyPackage // abstract class abstract class Animal {String AnimalName = ''Animal (String name) {this.AnimalName = name} // 비추 상 메서드 선언 // 기본 구현이 있습니다. public void BasicInfo (String details) {System. out.println (this.AnimalName + ''+ details)} // 하위 클래스에 의해 구현 될 // 추상 메서드 abstract public void habitat () abstract public void respiration ()} class Terrestrial extends Animal {// constructor Terrestrial (문자열 이름) {super (name)} @Override public void habitat () {System.out.println ( 'leave on land and')} @Override public void respiration () {System.out.println ( 'respire ')}} class Aquatic extends Animal {// constructor Aquatic (String name) {super (name)} @Override public void habitat () {System.out.println ('It leaves in water and ') } @Override public void respiration () {System.out.println ( '아가미 또는 피부를 통해 호흡합니다.')}} class AbstractClassDemo {public static voi d main (String [] args) {// 지상파 클래스의 객체를 생성하고 // Animal 클래스 참조를 사용합니다. Animal object1 = new Terrestrial ( 'Humans') object1.BasicInfo ( 'are terrestrial beings, they') object1.habitat () object1.respiration () System.out.println ( '') // Objects of circle class Animal object2 = new Aquatic ( 'Fishes') object2.BasicInfo ( 'Aqautic beings, they') object2.habitat () object2.respiration ()}}

산출

인간은 지상의 존재이며 육지로 떠나 폐나 기관을 통해 호흡합니다. 물고기는 수생 생물이며 물에 빠져 아가미 나 피부를 통해 호흡합니다.

그만큼 BasicInfo () 공유하는 방법입니다 지구의물의 클래스. 이후 동물 클래스 시작할 수 없습니다. 우리는 지구의물의 프로그래밍 목적을위한 클래스. 다음으로 인터페이스가 있습니다.



자바 인터페이스

달성의 또 다른 방법 추출 Java에서 인터페이스 .인터페이스는 추상 메소드의 모음이며 구체적인 내용이 없습니다. , 추상 클래스와는 다릅니다. 그러나 추상 클래스와 달리 인터페이스는 Java에서 완전한 추상화를 제공합니다. 클래스처럼 메소드와 변수를 모두 가질 수 있습니다. 그러나 인터페이스에 선언 된 메서드는 기본적으로 추상입니다.여기에 추상 클래스 시연 :

package MyPackage interface Animals {// abstract methods void habitat () void respiration ()} class TerrestrialA implements Animals {String AnimalName = ''// constructor TerrestrialA (String name) {this.AnimalName = name} @Override public void habitat () {System.out.println (this.AnimalName + 'leave on land and')} @Override public void respiration () {System.out.println ( 'respire through lungs or trachea.')}} class AquaticA implements Animals {String AnimalName = ''// constructor AquaticA (String name) {this.AnimalName = name} @Override public void habitat () {System.out.println (this.AnimalName + 'leave in water and')} @Override public void respiration () {System.out.println ( '아가미 또는 피부를 통해 호흡합니다.')}} class JavaInterfaceDemo {public static void main (String [] args) {// Object of Terrestrial 클래스 생성 // 및 Animal 클래스 참조 사용 . Animals object1 = new TerrestrialA ( 'Humans') object1.habitat () object1.respiration () System.out.println ( '') // 원 클래스의 개체 만들기 Animals object2 = new AquaticA ( 'Fishes') object2.habitat () object2.respiration ()}}

산출

인간은 육지로 떠나 폐나 기관을 통해 호흡합니다. 물고기는 물에 빠져 아가미 나 피부를 통해 호흡합니다.

사이에 공통 코드가없는 경우 클래스 , 그런 다음 인터페이스로 이동할 수 있습니다. 인터페이스는 비 추상적 인 메서드가 없기 때문에 클래스의 청사진과 비슷합니다.

위의 내용에서 추상 클래스와 인터페이스의 주요 차이점을 알 수 있습니다. . 즉, 추상 클래스와 달리 인터페이스는 추출 자바에서. 이제 다른 차이점을 나열 해 보겠습니다.

추상 클래스 대 인터페이스

아래 표는 추상 클래스와 인터페이스의 주요 차이점을 나열합니다.

매개 변수 추상 클래스 상호 작용

기본 방법 구현

기본 메소드 구현을 가질 수 있습니다.

인터페이스는 순수한 추상화를 제공하며 전혀 구현할 수 없습니다.

변수

최종 변수가 아닐 수 있습니다.

인터페이스에서 선언 된 변수는 기본적으로 최종입니다.

사용 된 키워드

추상 클래스는 'extends'키워드를 사용하여 확장 할 수 있습니다.

인터페이스는 키워드 구현을 사용하여 구현해야합니다.

액세스 수정 자

할 수있다공개, 보호, 개인 및 기본 수정 자 포함

인터페이스 메소드는 기본적으로 공용입니다. 다른 액세스 수정자를 함께 사용할 수 없습니다.

구현 속도

인터페이스보다 빠릅니다

인터페이스가 다소 느리고 추가 간접이 필요합니다.

Windows 10에서 PHP를 실행하는 방법

일반 수업

하나의 추상 클래스 만 확장 할 수 있습니다.

여러 인터페이스 구현 가능

생성자

추상 클래스는 생성자를 가질 수 있습니다.

인터페이스는 생성자를 가질 수 없습니다.

다중 상속

추상 클래스는 다른 클래스를 확장하고 여러 Java 인터페이스를 구현할 수 있습니다.

인터페이스는 다른 Java 인터페이스 만 확장 할 수 있습니다.

이제 Java에서 추상 클래스와 인터페이스의 주요 차이점을 살펴 보겠습니다. 그러나이 두 가지 중 어떤 것을 언제 사용할지 어떻게 결정합니까?

Abstract Class는 언제 사용하고 Interface는 언제 사용합니까?

다음과 같은 경우 추상 클래스 사용을 고려하십시오.

  • 공유해야하는 관련 수업이있는 경우 같은 줄의 코드
  • 정의하려는 경우 비 정적 또는 최종 필드
  • 있을 때메서드 또는 필드또는 필요 액세스 수정 자 대중 이외의 (예 : 보호 및 개인)

다음과 같은 경우 인터페이스 사용을 고려하십시오.

  • 달성하고 싶을 때 순수 추상화
  • 고용하려는 경우 배수 즉,둘 이상의 인터페이스 구현
  • 특정 데이터 유형의 동작을 지정하고 싶지만 해당 동작을 구현하는 사람은 신경 쓰지 않는 경우.

이것으로이 기사의 끝으로 이동합니다. Interview에서 가장 자주 묻는 Java 질문 중 하나를 다루었습니다. Java의 추상 클래스와 인터페이스의 차이점입니다.

가능한 한 많이 연습하고 경험을 되 돌리십시오.

확인 전 세계에 250,000 명 이상의 만족 한 학습자 네트워크를 보유한 신뢰할 수있는 온라인 학습 회사 인 Edureka에서 작성했습니다. 우리는 당신의 여정의 모든 단계에서 당신을 돕기 위해 여기에 있습니다.이 자바 인터뷰 질문 외에 우리는 자바 개발자가 되고자하는 학생과 전문가를 위해 고안된 커리큘럼을 제안합니다.

질문이 있으십니까? 이 '자바 맵 인터페이스'의 댓글 섹션에 언급하십시오. 기사와 우리는 가능한 한 빨리 당신에게 돌아갈 것입니다.