abstract(추상) 클래스
– 하나 이상의 abstract 메소드(미완성 메소드)를 가진 클래스
– 인스턴스 생성을 불가 (컴파일 에러)
– 참조변수 생성과 오버라이딩이 가능
public class Test { public static void main(String[] args) { // AA aa = new AA(); // 컴파일 에러 AA aa = new BB(); aa.aa(); } } abstract class AA{ abstract void aa(); } class BB extends AA{ void aa(){ System.out.println("오버라이딩"); } }
interface
– 모든 메소드가 abstract 메소드인 클래스는 인터페이스로 정의한다.
– 두 결과물의 연결고리가 되는 일종의 규약
– 인터페이스에 정의된 메소드는 public abstract로 선언된다.
– 인터페이스에 정의된 변수는 public static final(상수)로 선언된다.
public interface Interface { int NUM = 1; // public static final int NUM = 1; 두문장은 동일하다. void inter(); // public abstract void inter(); 두문장은 동일하다. }
– 참조변수 생성과 오버라이딩이 가능
– implements 키워드를 사용하여 구현(상속)
public class Test{ public static void main(String[] args) { Interface inter = new AA(); inter.inter(); } } class AA implements Interface{ @Override public void inter() { System.out.println("오버라이딩"); } }
– 둘 이상의 인터페이스 구현(상속)이 가능하다.
– 인터페이스가 인터페이스를 상속할때는 extends 를 사용
public interface AAA extends Interface, Interhair{ }