final 과 abstract는 반대개념.
final
변수
final이 변수 앞에 오게되면 상수로 인식.
static은 전역변수에만 들어갈 수 있지만, (지역변수x)
final은 전역,지역 변수 모두에 사용할 수 있다.
상수는 모두 대문자로 표시하는 것을 권장하며 반드시 값을 초기화해야함.
(예) MAX_ITEM_NUMBER
메소드
method 앞에 오면 오버라이딩(재정의) 불가.
클래스
클래스 앞에 오면 상속이 안되고 객체 생성은 가능.
abstract
변수
변수 앞에 올 수 없다.
메소드
메소드 앞에 abstract가 붙으면 선언부만 있고 구현부가 없다. 즉 오버라이딩을 위한 것이다.
보통 이벤트 등의 구현에 많이 사용되는데, 이는 이벤트마다 처리하는 내용이 달라질 수 있기 때문에.
abstract method를 가지고 있는 class는 반드시 abstract class로 선언해야 한다.
//이렇게 원형만 만들어둠. public abstract void emptyMethod(); //상속받은 클래스에서 아래와 같이 오버라이딩해주는데, abstract는 제외! public void emptyMethod() { ... }
클래스
abstract 클래스는 생성할 수 없고, 무조건 상속해야 사용할 수 있다.
어떤 클래스가 abstract 클래스를 상속받았다면 abstract 메소드를 오버라이딩해야한다. 그렇지 않으면 상속받은 클래스도 abstract 클래스로 선언되어야 한다.