자바

JAVA 자바 final 클래스와 final 메서드

알통몬_ 2017. 3. 12. 19:36
반응형


안녕하세요 알통몬입니다.

공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!

포스팅 내용이 찾아주신 분들께 도움이 되길 바라며

더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^

 

final 클래스와 final 메서드 


클래스를 선언할 때 final 키워드를 class 앞에 붙이게 되면 

최종적인 클래스가 돼서 상속할 수 없는 클래스가 됩니다.

 => final 클래스는 부모 클래스가 될 수 없기 때문에 자식 클래스를 만들 수 없음.


public final class 클래스 { ... }


따라서 public class 자식클래스 extends 클래스 { ... }  할 수 없습니다.


예제)

public final class Member {

}

//public class VeryVeryImportantPerson extends Member {
 
} 위처럼 final 클래스를 부모 클래스로 할 수 없습니다.


메서드를 선언할 때 final 키워드를 붙이면 
해당 메서드는 최종적인 메서드가 되므로 오버라이딩할 수 없는 메서드가 됩니다.
 => 부모 클래스를 상속하여 자식 클래스를 선언할 때 부모 클래스에
 선언된 final 메서드는 자식 메서드에서 재정의할 수 없다.
public final 리턴타입 메서드([매개변수,...]) { ... }

예제)
부모 클래스
public class Car {
//필드
public int speed;
//메소드
public void speedUp() {
speed += 1;
}
//final 메소드
public final void stop() {
System.out.println("차를 멈춤");
speed = 0;
}
}
 
자식 클래스
public class SportsCar extends Car {
@Override
public void speedUp() {
speed += 10;
}
//오버라이딩을 할 수 없음
/* 부모 클래스의 stop 메서드 final 이 붙었으므로
@Override
public void stop() {
System.out.println("스포츠카를 멈춤");
speed = 0;
}
*/
}


반응형