'final'에 해당되는 글 2건

  1. 2015.07.27 자바(JAVA)의 final 제어자
  2. 2015.06.18 파이널판타지7 리메이크 발표 (2015 E3)

  클래스나 메소드 혹은 변수를 선언할 때 final 제어자가 붙을 수 있는데 각각 다음과 같은 제한이 생기게 된다.


[표 1] final 제어자의 효과

대상

제한

클래스

다른 클래스에서 상속을 하지 못 한다.

메소드

상속 받은 클래스에서 오버라이딩 하지 못한다.

클래스 변수

선언과 동시에 값을 지정하여야하며 이후 수정이 불가하다.

인스턴스 변수

선언과 동시에 초기화하거나 생성자 내에서 값을 지정할 수 있다. 이후에는 수정이 불가하다.

지역 변수

선언과 동시에 초기화하거나 그 이후에 값을 지정할 수 있다. 이후에는 수정이 불가하다.


예를 들어보자 .


final class CA {

   private static final int ia = 11;
   private final int ib = 22;
   private final int ic;

   public CA() {
       ic = 22;
   }

   public final void func() {
       final int id = 22;
       final int ie;
       System.out.println(id);
       ie = 22;
       //이후에 id는 수정 불가
   }

}

클래스 CA는 파이널 클래스이므로 이것을 상속 받아서 파생클래스를 만들지 못한다. 그리고 func()메소드는 final이므로 상속 받은 클래스에서 오버라이딩하지 못한다. (이 경우는 클래스 자체가 final이므로 별 의미가 없으나 일반 클래스의 final 메소드는 자식 클래스가 오버라이딩하지 못한다.) 많이 사용되는 String 클래스나 Math클래스도 final클래스이므로 이것을 상속받아 새로운 클래스를 파생시키지 못한다.


 그리고 final 정적 변수 ia는 반드시 선언하면서 그 값을 지정해 주어야 하며 다른 곳에서 초기화하지 못한다. 하지만 final 인스턴스 변수(위 예에서 ib와 ic)는 선언부에서 값을 지정하거나 생성자에서 값을 지정해 줄 수도 있으며 이후에 값을 변경하지 못하다는 점은 동일하다. 이 점을 이용해서 final 멤버 변수가 인스턴스마다 서로 다른 값을 가지도록 할 수 있다.


 func()메소드의 id, ie와 같이 메소드 내부의 final 변수는 메소드가 실행되면서 생성되고 메소드가 종료되면 소멸되는 것은 일반 변수와 같지만 한 번 초기화되면 그 이후에는 값을 변경할 수 없다. 지역 변수는 인스턴스 변수와 유사하게 선언하면서 값을 지정할 수도 있고 선언한 후에 별도로 초기화할 수도 있다. 따라서 이 점을 이용하면 메소드가 호출될 때마다 final 지역 변수가 다른 값을 가지도록 할 수 있다.


 만약 어떤 클래스의 인스턴스가 final로 생성되었다고 가정하자.


final ClassA ca = new ClassA();

ca는 클래스의 인스턴스로서 내부적으로는  참조값(주소)을 갖는 변수인데 final로 제한되면 한 번 참조가 생성된  이후에는 새로운 참조값을 가지지 못한다.


final ClassA ca = new ClassA();

….

….

ca = new ClassA(); //에러 발생


따라서 위와 같이 다른 곳에서 ClassA()의 새로운 인스턴스(참조값)를 대입하려고 하면 에러를 발생시킨다.



Posted by 살레시오

 2015년 E3에서 스퀘어에닉스가 파이널판타지7 의 리메이크를 발표했는데 많은 올드 게이머들도 그랬겠지만 개인적으로도 반가웠다. 이 게임은 원래 무려 약 20여년 전 (1997년)에 플레이스테이션1으로 발매된 롤플레잉 게임이다.



 줄거리는 세계를 멸망시켜 별에 숨겨진 막대한 정신적 에너지를 흡수해 신으로 태어나려하는 악당 세피로스와 세피로스를 만들었고 돈과 권력을 위해 별의 정신 에너지를 고갈시키는 신라 컴퍼니, 세피로스의 본체인 절대악 제노바에 맞서 싸우는 클라우드 일행의 모험을 다루고 있다. 이 게임에서 주인공은 과거의 기억이 조작되어 있을 뿐 아니라, 때때로 적에게 협력하는 정신 분열 증세를 보이는 등, 각 주인공들이 모두 숨겨진 비밀을 갖고 있어 이를 밝혀내는 것도 주된 내용 중 하나이다. 신라 컴퍼니는 전기 등으로 쓸 수 있는 마황 에너지를 땅에서 뽑아내 이를 판매하는 회사이고다 도시 하나를 소유하고 있을 정도로 거대한 회사지만, 마황에너지가 부족해 앞으로의 전망이 불투명해지자 마황에너지가 무한으로 나온다는 전설 속의 약속의 땅을 찾기 위한 계획을 시작한다.한편, 마황에너지의 무분별한 채취로 인해 별이 죽어가는 것에 대해 불만을 품은 사람들이 모인 테러집단 아발란치는 마황로 폭파작전을 개시한다. 이 작전에는 예전에 솔저 (신라의 엘리트 특수부대 요원) 였던 클라우드 역시 참여하고 있다.


 그 당시로는 획기적인 3d뷰 rgp 게임이라는 점과 탄탄한 스토리 등으로 선풍적인 인기를 구가했으며 그 인기 덕에 스토리 라인을 이은 몇몇 게임 및 영상물이 제작된 바 있으며 본작의 리메이크 요구가 끊이지 않았던 게임이기도 했는데 이번에 리메이크가 발표된 것이다.

트레일러 마지막 장면에서 마황로를 폭파하기 위해 도시로 진입하는 두 주인공을 보고 사람들이 환호를 지른다..(추억 돋네..) 그런데 언제 발매할지는 발표가 나지 않았다,(이전에 돌던  루머대로 20주년에 맞추어서 낼 것인가.. 그렇다면 아직도 2년이나 남았는데..젠장.. )


Posted by 살레시오