[JAVA 기초] 추상 클래스와 인터페이스

혜쿰·2023년 8월 3일
2

📌 추상클래스

{}이 없는 메소드를 추상메소드라고 하는데 이런 추상메소드를 포함하는 클래스를 추상메소드라고 한다. abstract키워드를 사용해야한다.

📍 추상 클래스의 특징

  • 미완성 클래스이다.
  • 구성요소 : 인스턴스 변수, 일반 메소드, 생성자, 추상 메소드 (반드시 추상메소드를 포함하지 않아도 된다.)
  • 상속을 강제한다. 하위 클래스에게 특정 메소드만 강제할 수 있다.
  • 추상 클래스도 클래스이기 때문에 단일상속만을 지원한다.
  • 추상 클래스와 추상메소드의 UML표기법은 이탤릭체로 표현한다.

📍 추상 클래스의 활용

추상 클래스

abstract clss Test {
	int num =3;
    public Test() { }
    public Test(int num) { 
     this.num = num;
     }
     public void methodA() {
     System.out.println("methodA");
     }
     public abstract void methodB(); // 추상메소드
}

하위 클래스

class AbTest extends Test {
	public void print() {
    System.out.println(num);
    }
    @Override
    public abstract void methodB(); { 
    System.out.println("methodB");
    }
}

📌 인터페이스

📍 인터페이스의 특징

  • 구성요소
public interface 인터페이스 명 {
	// public static final로 지정한 상수
    // public abstract 지정자를 이용한 추상메소드
    // public default 지정자를 이용한 일반메소드
    // public static 지정자를 이용한 일반메소드
}
  • 상속과 비슷한 역할인 구현(implements)을 이용하고 다형성 적용도 가능하다.
  • 구현을 할때 하위 클래스에서 인터페이스의 추상 메소드를 반드시 오버라이딩해야 한다.
  • 다중 구현이 가능하다.

    위 사진은 인터페이스의 UML표기법이다.
    사진 출처 : https://gmlwjd9405.github.io/2018/07/04/class-diagram.html

📍 인터페이스의 활용

인터페이스

public interface Animal {
	public abstract void dog();
    public abstract void cat();
    public void snake(); // abstract 키워드 생략가능
}

하위 클래스

public class Pet {
	@Override
	public void dog();
    @Override
    public void cat();
    @Override
    public void snake();
}

1개의 댓글

comment-user-thumbnail
2023년 8월 3일

잘 보고갑니다

답글 달기