추상 클래스 & 인터페이스

김예지·2022년 12월 23일
0

추상 클래스

-미완성 설계도, 인스턴스 생성불가,
-미완성 메서드(추상 메서드)를 포함하고 있는 클래스
-상속 받을 땐 extends를 사용한다

형식 ->
abstract class 클래스명{
abstract 메소드명(); // 추상 메소드
void 메소드명(){
} // 일반 인스턴스 메소드
}

  • 상속 받은 자손 클래스에서 추상 메소드의 구현부를 작성해주면 인스턴스 생성이 가능하다(모든 추상 메소드의 구현부를 작성해줘야 함)
  • 일부분의 추상 메소드만 사용할 시 class 옆에 abstract를 붙여줘야함

인터페이스

-인터페이스는 일종의 추상클래스이다
-추상 클래스는 미완성 설계도라고 치면 인터페이스는 기본 설계도라고 할 수 있다
-인터페이스는 추상클래스처럼 완성되지 않은 불완전한 것이기 떄문에 그 자체만으로 사용되기 보다는 다른 클래스를 작성하는데 도움 줄 목적으로 작성된다

형식 -> (상수와 추상메서드만 사용이 가능하다)
interface 인터페이스 이름{
public static final 타입 상수 이름 = 값;
public abstract 메서드 이름(매개변수목록);
}

상속

-인터페이스는 클래스와 달리 Object클래스와 같은 최고 조상이 없다
-인터페이스는 인터페이스로부터만 상속받을 수 있으며, 클래스와는 달리 다중상속, 즉 여러개의 인터페이스로부터 상속을 받는 것이 가능하다 (추상메서드는 충돌해도 상관이 없기때문에)

구현

-인터페이스는 추상 클래스처럼 그 자체로는 인스턴스를 생성할 수 없으며, 추상 클래스가 상속을 통해 추상메서드를 완성하는 것 처럼, 인터페이스도 자신에 정의된 추상메서드의 몸통을 만들어주는 클래스를 작성해야 하는데, 추상 클래스를 상속 받는 것 처럼 인터페이스도 크게 다르지 않다 하지만 키워드 extends대신 implements 를 사용한다
-만일 구현하는 인처페이스의 메서드 중 일부만 구현한다면, abstract를 붙여 추상 클래스로 선언 해야한다
-상속(extends)과 구현(implements) 동시에 가능함

* java8 이상 부터 default method는 상속받을 때 필수적으로 구현을 하지 않아도 된다 그러면 인터페이스 수정이 더 유연해지는 장점이 생긴다
profile
나만의 방식을 찾아가는 신입신입 개발자

0개의 댓글