[java] 자바 abstract(추상)클래스와 interface(인터페이스)에 대한 이해

abstract(추상) 클래스
– 하나 이상의 abstract 메소드(미완성 메소드)를 가진 클래스
– 인스턴스 생성을 불가 (컴파일 에러)
– 참조변수 생성과 오버라이딩이 가능
Cap 2016-01-09 22-31-51-873

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{

}

 

답글 남기기