자바 클래스(객체) vs 추상클래스 vs 인터페이스

클래스

  • 객체를 생성하기위한 클래스(설계도)
  • 사용하기위해서는 반드시 객체 생성 = 인스턴스화 = 메모리에 로드한다.
  • 구성요소 3가지
    • 변수 : 속성
    • 메서드 : 동작
    • 생성자 : 초기화
  • 상속 가능 : 확장 extends 사용가능
  • 관계 : 다중상속 불가
  • 업캐스팅 가능




추상클래스

  • 클래스
  • 구성요소 3가지
    • 변수
    • 상수
    • 일반메서드
    • 추상메서드
    • 생성자
  • 상속 가능
  • 관계 : 다중상속 불가
  • 업캐스팅 가능
  • 추상클래시끼리 상속 가능? 가능 extends를 사용
  • 상속 후 추상메서드 오버라이딩(구현)해서 사용해야한다.




인터페이스

  • 인터페이스는 클래스가 아니라서 구성요소가 다르다
  • 구성요소 2가지
    • 상수
    • 추상메서드
  • 상속 가능 => 구현 implements 사용가능
  • 인터페이스끼리 상속 가능한가? 가능 extends를 사용
  • 관계 : 다중구현 가능
  • 추상메서드 : [public abstract]
  • 인터페이스안의 모든 메서드의 접근지정자는 default가 아닌 public이다.
  • 상속 후 추상메서드 오버라이딩(구현)해서 사용해야한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
// [] 대괄호는 생략이 가능하다는 의미이다.
// 추상메서드 선언방법 중 실무에서는 4번째방법으로 선언을 많이 한다

interface A{
public static final 변수명;
[public static final] 변수명;

public abstract method1();
[public] abstract method1();
[public abstract] method1();
public [abstract] method1();

}




비교표

비교 클래스 추상클래스 인터페이스
클래스인가? Y Y N
구성요소 변수, 메서드, 생성자 변수, 상수, 일반메서드, 추상메서드, 생성자 상수, 추상메서드
관계 다중상속 불가능 다중상속 불가능 다중구현 가능
상속가능여부 가능 extends(확장) 가능 extends(확장) 가능 implements(구현)
업캐스팅가능여부 Y Y Y

Comments