public class Oop34_final {
    public static void main(String[] args) {
        FinalTest t2 = new FinalTest();
        System.out.println(t2.getMaxSize());

     //AbstractTest ab = new AbstractTest();
     //미완성인 추상클래스이므로 객체생성 불가
    }
}

final 마지막의, 변경될 수 없는
제어자 final이 쓰이는 대상 :

  • 클래스: 변경될 수 없는 클래스, 확장될 수 없는 클래스가 된다.
    그래서 final로 지정된 클래스는 다른 클래스의 조상이 될 수 없다.
  • 메서드: 변경될 수 없는 메서드, final로 지정된 메서드는 오버라이딩을 통해
    재정의 될 수 없다.
  • 멤버변수,지역변수: 변수 앞에 final이 붙으면 값을 변경할 수 없는 상수가 된다.
  final class FinalTest{ //조상이 될 수 없는 클래스
      final int MAX_SIZE = 10; // 값을 변경할 수 없는 멤버변수(상수)

      final int getMaxSize() { //오버라이딩을 할 수 없는 메서드(변경불가)
          final int LV = MAX_SIZE; //값을 변경할 수 없는 지역변수(상수)
          return MAX_SIZE;
      }
  }

abstract 추상의,미완성의
제어자 abstract가 쓰이는 대상 :

  • 클래스: 클래스 내에 추상 메서드가 선언되어 있음을 의미한다.
    (클래스 내에 추상메서드가 1개라도 있으면 추상클래스)
    미완성 클래스이기 때문에 객체생성 불가!
    < 그럼 어떻게 사용하나? >
    추상클래스를 상속받아서 완전한 클래스를 만든 후에 객체생성 가능
    추상클래스를 상속받아서 오버라이딩해서 완전하게 만든 후에 사용한다.
  • 메서드: 선언부만 작성하고 구현부는 작성하지 않은 추상메서드임을 알린다.
    (선언부만 있고 구현부는 미완성인 메서드를 추상메서드라고 한다)
abstract class AbstractTest{ //추상메서드를 포함한 추상클래스
    abstract void move(); //선언부만 있고 구현부가 없는 추상메서드
}
profile
공부하고 기록하는 블로그

0개의 댓글