320x100
320x100

추상 클래스

: 클래스는 크게 일반 클래스와 추상 클래스로 나뉨

: 클래스 내 추상 메서드가 하나 이상 포함되거나 abstract로 정의된 경우

: 추상 메서드가 있을 수 있고 일반 메서드가 있을수도 있음

: 추상 클래스로 인터페이스를 구현할 수 있지만 이때는 모두 구현하지 않아도됨

: 추상 클래스로 인스턴스를 만들 수 없지만 추상 클래스를 상속 받은 클래스를 통하면 인스턴스가 가능

 

- 목적

: 상속을 위함

abstract class Shape
{
   abstract void draw( );   //메소드 앞에 abstract가 있으면 추상메소드다.
   void hit(int x)
   {
      x=3;
   }
}

 

 

 

 

 

인터페이스

: 모든 메서드가 추상 메서드인 경우

: JAVA 8에서는 defult 키워드를 이용해서 일반 메서드의 구현도 가능

: 안이 비어있는 메서드들로만 구성되어 있으며 상속하는 클래스들에서 해당 메서드등의 내용을 구현해야함

: 일반 변수들을 가질 수 없으며 인터페이스 변수들은 static이여야 함

 

- 목적

: 함수의 구현을 강제함으로써 구현 객체의 같은 동작을 보장

interface Shape
{
   void draw( );   //인터페이스에서는 abstract 생략가능하다.
   abstract void move(int y);
}

 

 

 

 

 

추상 클래스와 인터페이스

: 상속받는 클래스 혹은 구현하는 인터페이스 안에 있는 추상 메서드를 구현하도록 강제함

: 이를 생각해보면 결국 추상 메서드를 구현 하는 것은 같음

: 추상 클래스 안에 추상 메서드를 여러 개 두거나 전부 추상 메서드로 두어도 인터페이스와 동일

 

- 차이점

: 인터페이스와 추상 클래스는 존재 목적이 다름

: 추상 클래스는 상속 받아서 기능을 이용하고 확장시키는 목적

: 인터페이스는 함수의 껍데기만 있는데, 함수의 구현을 강제함으로써 구현 객체의 같은 동작을 보장하는 것이 목적

 

- 개념이 나뉜 이유

: JAVA가 다중 상속을 지원하지 않기 때문에 이 두 개념이 나온 것 (다중 상속의 모호성으로 인함)

: 모든 클래스가 같은 이름의 메서드를 가지고 있을 때 다중 상속을 받으면 가장 마지막 자식 클래스에서 해당 클래스를 호출하면 어떤 부모 클래스의 메서드가 실행될지 모르기 때문

: 이와 달리 인터페이스는 여러 개의 인터페이스를 구현할 수있음

 

 

 

 

 

상속

: 슈퍼 클래스의 기능을 이용하거나 확장하기 위해 사용

: 다중 상속의 모호성 때문에 하나만 상속 받을 수 있음

: 반면 인터페이스는 해당 인터페이스를 구현한 객체들에 대해 동일한 동작을 약속

 

 

 

 

 

 

Reference

 

자바의 추상 클래스와 인터페이스

추상 클래스와 인터페이스의 차이 | 추상 클래스(Abstract class)와 인터페이스(Interface)의 차이 및 존재 이유를 설명해주세요. 클래스는 크게 일반 클래스와 추상 클래스로 나뉘는데 추상 클래스는

brunch.co.kr

 

자바의 추상클래스(abstract class)와 인터페이스(interface)

자바의 상속 개념을 공부할때 빠지지 않고 등장하는 것이 바로 오늘 배울 추상클래스(abstract class)와 인터페이스(interface)다. 무슨 공통점이 있는지 무슨 차이점이 있는지 말도 애매모호하고 서로

alecture.blogspot.com

 

300x250
728x90