abtract class는 abstract method 외에도 다른 method를 선언할 수 있고, static / final이 아닌 일반 필드들도 선언이 가능하다. 하지만 interface는 모든 필드들이 public static final이어야 하고(상수만 선언 가능) abtract method만 선언 가능하다.
추상클래스(abstract class)
- 클래스를 설계도에 비유한다면 추상 클래스는 미완성 설계도에 비유할 수 있다. 추상 클래스는 키워드 abstract를 붙이면된다. 추상화된 부분을 추상 메소드를 통해서 하위 클래스들에게 상속을 통해서 사용할 수 있도록 한다.
또한 전혀 다른 클래스들에게 사용한다기 보단 비슷한 특징을 가지고 있는 클래스들에게 사용한다.
추상클래스 특징
1. 추상 클래스는 인스턴스, 즉 객체를 만들 수 없는 클래스이다.
2. 추상 메소드는 하위 클래스에서 추상 메소드의 구현을 강제한다.
3. 추상 메소드를 포함하는 클래스는 반드시 추상 클래스여야 한다.
4. 다중 상속이 불가능하다. -> 하나의 인터페이스는 여러개의 인터페이스를 상속 가능하다.
추상클래스는 extends를 사용한다
상속: 재사용 + 확장
- 추상클래스는 추상클래스를 상속 받을수 있다.
package Notebook;
// 추상클래스 및 추상메소드 선언
public abstract class ex02 {
abstract void print1();
}
package Notebook;
// 추상메소드가 추상메소드를 상속받고
// 추상메소드를 선언
public abstract class ex02a extends ex02 {
abstract void print2();
}
- 추상클래스는 일반클래스도 상속 받을수 있다.
package Notebook;
// 추상클래스가 일반클래스를 상속받는다.
public abstract class ex02a extends ex01_a {
abstract void print3();
}
-----------------------------------------------------------------------------------------------------
인터페이스(interface)
인터페이스는 구현된 것은 아무 것도 없고 밑그림만 그려져 있는 기본 설계도라고 표현할 수 있다.
인터페이스 특징
1. 모든 멤버 변수는 public static final 이어야 하며, 이를 생략할 수 있다.
2. 모든 메소드는 public abstract 이어야 하며, 이를 생략할 수 있다.
3. 다중상속이 가능하다.
인터페이스 interface a가 존재한다 가정
인터페이스 interface b가 존재한다 가정
// 클래스 c 는 인터페이스 a,b를 다중 상속 가능하다
public class c implements a,b
인터페이스는 implements를 사용한다
- implements 라는 키워드처럼 인터페이스에 정의된 메소드를 각 클래스의 목적에 맞게 기능을 구현한다.
최종정리
- 인터페이스는 implements 라는 키워드처럼 인터페이스에 정의된 메소드를 각 클래스의 목적에 맞게 기능을 구현하는 느낌이고, 추상 클래스는 extends 키워드를 사용해서 자신의 기능들을 하위 클래스에 상속시켜주고 하위클래스는 이를 바탕으로 확장 시키는 느낌
'Java' 카테고리의 다른 글
[Java] JDBC (0) | 2023.11.30 |
---|---|
[Java] Socket Communication (0) | 2023.11.29 |
[Java]Non-Access Modifier(final,static,abstract) (0) | 2023.11.29 |
[Java] 인터페이스 (Interface) (2) | 2023.11.29 |
[Java] Inheritance(상속) (0) | 2023.11.28 |