abstract
Abstract class abst{
int A; // 인스턴스 변수 선언 가능
public void msd1(){
//
}
abstract void msd2(); // 추상 클래스는 절대 {} 내용을 가질 수 없음. 그냥 적는것도 안됨
// 내부에 abstract 메소드 사용 가능 ( abstract 함수는 abstract 클래스 안에서만 선언 가능함)
// 공용 변수 / 메소드 정의 가능
}
Interface
규칙 느낌이 강함. 변수가 final로 고정되는 것도 그렇게 생각하면 편함
interface itface{
int y; // ❌ 초기화 안되어 있음
int x = 10; // ✅ 인터페이스 안에 모든 변수는 public static final로 고정됨
x = 20; // ❌ final 이라 수정 불가능함
void msd1(); //public abstract void로 고정 (쓰던 말던 상관 없음 그냥 명시해주는 거임)
//
}
Abstract class
vs Interface
Abstract class | Interface | |
---|---|---|
변수 선언 | 선언 가능 | final 변수만 선언 가능 |
메소드 | abstract 또는 일반 메소드 선언 가능 | 무조건 abstract만 (state인가 예외 있다고 함) |
abstract 메소드를 선언하면 무조건 하위 클래스가 구현하도록 강제할 수 있음
abstract 메소드는 일반 클래스에서 선언 불가능함 & {}
구현을 가지고 있으면 안됨
언제 쓰지?
상속하는 클래스들이 많은 공통 메소드를 가질 때,
public 외에 다른 접근 제어자가 필요할 때,
인스턴수 변수 선언이 필요할 때.
-> 추상 클래스
다중 상속이 쓰고 싶을 때,
서로 관련 없는 클래스들이 같은 기능을 가져야 할 때
-> 인터페이스
'자바' 카테고리의 다른 글
[JAVA] 컴퓨터 프로그래밍 - 인터페이스 (0) | 2025.04.28 |
---|---|
[JAVA] 컴퓨터 프로그래밍 - Class 추가 (0) | 2025.04.27 |
[JAVA] 컴퓨터 프로그래밍 - 변수 기초 (0) | 2025.04.27 |
[JAVA] 컴퓨터 프로그래밍 - Class 기초 (0) | 2025.04.27 |
[JAVA] 컴퓨터 프로그래밍 - 개념 정리 (0) | 2025.04.27 |