Access Modifier
Class Name
field
Constructor
Method / Function
abstract 추상 함수를 가지고 있는 클래스
추상 함수에도 abstract가 붙고, 추상 함수를 가지고 있으면 클래스 정의 앞에도 abstract를 붙여주어야 함
추상 함수 말고도 가상 함수나 일반 멤버 함수 또는 멤버 변수를 가질 수 있음
자식 클래스에서 반드시 오버라이딩 하도록 강제하는 함수
가상 함수 처럼 업 캐스팅 할 경우 자식이 오버라이딩한 함수를 호출하도록 한다.
가상 함수와 다르게 구현부를 작성 하면 안되고, 함수의 인터페이스만 정의한다.
자식클래스에서 오버라이딩 하지 않으면 컴파일 에러가 발생한다.
추상 클래스 타입의 객체 생성은 불가능 하고, 컴파일 에러를 발생시킨다.
다중 상속이 불가능 하다.
interface 키워드를 붙여주며, class는 붙이지 않음
추상 함수는 접근 한정자 같은 어떠한 키워드로 붙지 않고, 함수 프로토 타입만 정의함
인터페이스 이름 앞에는 I를 붙여주는것이 암묵적인 약속
멤버 변수, 가상 함수 그리고 다른 멤버 함수등을 가질 수 없고 오로지 추상 함수만을 가지고 인터페이스 역할만 함
인터페이스를 다중 상속 할 수 있으며, 자식들은 무조건 오버라이딩을 해야함
인터페이스 타입의 객체는 생성할 수 없지만 인터페이스 타입의 변수를 선언하여 자식 타입의 객체를 업캐스팅 할 수 있음