* final : 변수, 메소드(instance 메소드), class
- 변경이 안된다. (더이상 바꿀 수 없다.)
- 메소드 : 하위 class에서 overriding 할 수 없다.
- class : 하위 class를 가질 수 없는 class.
(대표 : String class, 선언 -> 한번 값이 대입되면 다시는 대입안됨.
ex : final int i = 10; i는 프로그램이 끝날때까지 값을 바꿀 수 없고 10만을 갖는다.
변수 : 변수의 상수화-> 한번 값이 대입되면 다시는 대입안됨.
instance변수 : 묵시적 초기화(x)
->값 대입 : 명시적 대입 (명시적 초기화)
->생성자에서 대입
final 변수은 한번 생성해주고 변수를 바꿀 수 없으므로 static과 잘어울린다.
- static 변수 : 선언시 값 대입.
->구문 : public static final
class A{
static final int i =10;
}
- 지역변수 : 사용 전까지 대입.
public void go(){
final int i;
i = 10; (이렇게 사용전에는 대입을 해줘야 하고, 한번 대입되면 값이 바뀔 수 없다. )
System.out.prinltl(i);
}
* final변수의 이름 관례 : 대문자
단어 + 단어 -> 단어_단어
* final class는 상속이 안된다.
project : day16
package : finaltest.clazz
class : SuperClass
SubClass
package finaltest.clazz;
public final class SuperClass {
}
-----------------
package finaltest.clazz;
public class SubClass extends SuperClass{
}
--------------------
project : day16
package : finaltest.method
class : SuperClass
SubClass
* final 이 붙은 메소드는 하위 class에서 오버라이드 할 수 없다.
package finaltest.method;
public class SuperClass {
public final void methodB(){
System.out.println("안녕하세요");
}
}
---------------------
package finaltest.method;
public class SubClass extends SuperClass{
@Override
public void methodB(){
System.out.println("SubClass 안녕하세요");
}
}
----------------------
project : day16
package : finaltest.var
class : Rectangle
package finaltest.var;
public class Rectangle {
public static final double PI = 3.14;
public static final int BLACK = 0;
public static final int WHITE = 1;
public static final int BLUE; //여기서 에러가 난다. static final 변수는 선언을 하면서 반드시 값을 대입 해줘야한다.
}
-------------------------------------------
package finaltest.var;
public class Rectangle {
public static final double PI = 3.14;
public static final int BLACK = 0;
public static final int WHITE = 1;
//public static final int BLUE; //여기서 에러가 난다. static final 변수는 선언을 하면서 반드시 값을 대입 해줘야한다.
private final int WIDTH; //final instance변수는 선언시 대입하거나 생성자에서 값을 대입해야한다. 처음 초기화하면 생성자에서 또 다시 값을 넣을 수 없다.
public Rectangle(int width){
this.WIDTH = width;
}
}
-------------------------------------
* 값이 대입되지 않은 로컬 변수는 사용할 수 없다.
package finaltest.var;
public class Rectangle {
public static final double PI = 3.14;
public static final int BLACK = 0;
public static final int WHITE = 1;
//public static final int BLUE; //여기서 에러가 난다. static final 변수는 선언을 하면서 반드시 값을 대입 해줘야한다.
private final int WIDTH;
public Rectangle(int width){
this.WIDTH = width;
}
public void rectMethod(){
final int var;
//var = 20;
//var = 10; //단 값은 한번만 넣어야 한다.
System.out.println(var);
}
}
'프로그래밍 > JAVA프로그래밍' 카테고리의 다른 글
다형성(polymorephism) (0) | 2012.07.28 |
---|---|
의존관계(dependency) (0) | 2012.07.28 |
this, super키워드 (0) | 2012.07.28 |
상속, 생성자 (0) | 2012.07.28 |
싱글턴 패턴 (0) | 2012.07.28 |