public abstract class 클래스명{
//필드
//생성자
//메서드
//추상메서드
}
앞에 abstract 키워드가 붙고, 구현부(중괄호{} 로 감싸져 있는 부분)를 없앤 메서드
abstract 리턴타입 메서드이름();
abstract class Player { // 추상 클래스
abstract void play(int pos); // 추상 메서드
abstract void stop(); // 추상 메서드
}
class AudioPlayer extends Player {
void play(int pos) { ... }; // 추상 메서드를 구현
void stop { ... }; // 추상 메서드를 구현
}
abstract class AbstractPlayer extends Player {
void play(int pos) { ... } // 추상 메서드를 구현
}
일종의 추상클래스.
추상메서드와 상수(변하지 않는 값)만을 멤버로 가질 수 있다.
public interface 인터페이스명 {
// 상수
타입 상수명 = 값;
// 추상 메소드
타입 메소드명(매개변수, ...);
// 디폴트 메소드
default 타입 메소드명(매개변수, ...) {
...
}
// 정적 메소드
static 타입 메소드명(매개변수, ...) {
...
}
}
[public static final] 타입 상수명 = 값;
[public abstract] 리턴타입 메소드명(매개변수, ...);
[public] default 리턴타입 메소드명(매개변수, ...) {
// ... (실행 내용)
}
[public] static 리턴타입 메소드명(매개변수, ...) {
// ... (실행 내용)
}
public class 구현클래스명 implments 인터페이스명 {
// 인터페이스에 선언된 추상 메소드의 실체 메소드 선언
}
여러가지 형태를 가질 수 있는 능력.
조상 클래스 타입의 참조변수로 자손클래스의 인스턴스를 참조할 수 있도록 하는 것.
[JAVA] 자바 추상클래스란?
https://limkydev.tistory.com/188
[Java] 객체의 다형성 구현 (인터페이스)
https://veneas.tistory.com/entry/Java-%EA%B0%9D%EC%B2%B4%EC%9D%98-%EB%8B%A4%ED%98%95%EC%84%B1-%EA%B5%AC%ED%98%84-%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4
[JAVA] 인터페이스란? (다형성, 추상클래스, implements)
https://doozi0316.tistory.com/entry/JAVA-%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4%EB%9E%80-%EB%8B%A4%ED%98%95%EC%84%B1-%EC%B6%94%EC%83%81%ED%81%B4%EB%9E%98%EC%8A%A4-implements