추상 클래스와 인터페이스를 한 번 알아보자!
💡 추상 클래스 : 일부 메소드가 구현되어있지 않고 선언만 되어있는 클래스, 상속을 통해서 클래스를 완성하도록 유도하는 클래스
💡 인터페이스 : 동일한 목적하에 동일한 기능을 수행하게끔 강제하는 구현체
추상클래스 | 인터페이스 | |
---|---|---|
공통점 | 객체를 생성할 수 없다. | 추상 메소드는 하위 클래스에서 구현되어야한다. |
차이점 | 일반 메소드와 추상 메소드를 모두 갖을 수 있다. | 추상 메소드만 가질 수 있다.(default 메소드는 구현이 가능하다.) |
멤버 변수를 가질 수 있다. | 멤버 변수를 가질 수 없다.(static final 변수는 가질 수 있다.) | |
단일 상속만 가능하다.(동일 클래스를 상속한 클래스들이라면 다중 상속 가능하다.) | 다중 상속이 가능하다. |
implements
구문만 추가하면 됨!💡 믹스인 : 클래스가 구현할 수 있는 타입으로, 대상 타입의 주된 기능에 선택적 기능을 혼합(mixedin) 한다는 뜻
Comparable
대표적 인터페이스
@impleSpec
자바독 태그르 붙여서 문서화를 꼭 해야함!인터페이스 -> 골격 구현 클래스 (추상 클래스) -> 구체 클래스
public interface Phone {
void booting();
void greeting();
void shutdown();
void process();
}
public abstract class AbstractPhone implements Phone {
//Default 메소드
@Override
public void booting() {
System.out.println("booting ...");
}
@Override
public void shutdown() {
System.out.println("shut down ...");
}
@Override
public void process() {
booting();
greeting();
shutdown();
}
}
public class Iphone extends AbstractPhone implements Phone {
@Override
public void greeting() {
System.out.println("I am iphone");
}
}
public class GalaxyPhone extends AbstractPhone implements Phone {
@Override
public void greeting() {
System.out.println("I am galaxy phone");
}
}
public class Main {
public static void main(String[] args) {
Iphone iphone = new Iphone();
iphone.process();
GalaxyPhone galaxyPhone = new GalaxyPhone();
galaxyPhone.process();
}
}
🎈귀중한 참고자료🎈
참고자료1