- Keyword final์ ๋ํด -
1. ๋ณ์ ์์ ์ผ์ ๋ final
public final String lens = "๊ด๊ฐ๋ ์ฆ";
ํด๋น ๋ณ์๋ ๊ฐ์ ํด๋์ค ๋ด์์๋ ๊ฐ์ ๋ฐ๊ฟ ์๊ฐ ์๋ค. (์ธ๋ถ ํด๋์ค์์๋ ๋น์ฐํ ๋ชป ๋ฐ๊ฟ.)
**๊ทธ๋ ๋ค๋ฉด ๋ฌด์กฐ๊ฑด ์ ์ธ๊ณผ ๋์์ ์ด๊ธฐํ๋ฅผ ํด์ผ ํ ๊น?
NO. ์์ฑ์๋ฅผ ํตํด ์ด๊ธฐํ ์์ผ๋ ๋๋ค!
Why? ์์ฑ์๋ฅผ ํตํด ๊ฐ์ฒด๋ฅผ ์์ฑํจ๊ณผ ๋์์ final ๋ณ์๋ฅผ ์ด๊ธฐํ ํ๋ ๊ฒ์, final ๋ณ์๋ฅผ ์ ์ธ๊ณผ ๋์์ ์ด๊ธฐํ ํ๋ ๊ฒ๊ณผ ์๋ฏธ๊ฐ ๊ฐ๋ค.
public class ActionCam extends Camera {
public final String lens;
//์์ฑ์
public ActionCam(){
// ์์ฑ์๋ฅผ ์ด์ฉํ์ฌ final ๋ณ์ ์ด๊ธฐํ
this.lens = "๊ด๊ฐ๋ ์ฆ"
}
}
2. ๋งค์๋ ์์ ์ผ์ ๋ final
Method ์์ final์ ์ฐ๋ฉด, ํด๋น method๋ ์์ ํด๋์ค์์ ์ค๋ฒ๋ผ์ด๋ฉ ํ์ง ๋ชปํ๋ค.
public final void makeVideo ()
{
System.out.println("์ด ๋งค์๋๋ ์์ ํด๋์ค์์ ์ค๋ฒ๋ผ์ด๋ฉ ๋ชปํ๋ค!")
}
3. ํด๋์ค ์์ ์ผ์ ๋ final
ํด๋น ํด๋์ค๋ ์์๋ ์ ์๋ค. ๋ฐ๋ผ์ ์์ ํด๋์ค๋ฅผ ๊ฐ์ง์ง ๋ชปํ๊ฒ ๋๋ค.
public final class ActionCam {
//...
}
4. Final Keyword์ ์์น
// ๋จผ์ ์ ๋ ์ฐ์ ์์
// ์ ๊ทผ์ ์ด์(public,private...) > abstract > static > final > ...
5. static๊ณผ final์ ์ฐจ์ด
final์ ํด๋น ๊ฐ์ ๋ํ ํ ๋น์ ๋ฑ ํ๋ฒ๋ง ํ๋ค๋ ์๋ฆฌ์ด๋ค. ๋ฐ๋ผ์ ๋ณ์์ ๊ฐ์ ๋ค์ ๋ณ๊ฒฝํ ์ ์๊ณ , ๋งค์๋์ ๋ํ ์ค๋ฒ ๋ผ์ด๋ฉ์ด ๋ถ๊ฐํ๋ฉฐ, ํด๋์ค๋ฅผ ์์ํ ์ ์๋๋ก ํ๋ ๊ฒ์ด๋ค.
static์ ํด๋น ๋ณ์๋ ๋งค์๋๋ฅผ ์ปดํ์ผ ํ์์ ๋ง๋๋ ๊ฒ์ด๋ค. ์ด๋ ํด๋น ๋ณ์๋ ๋งค์๋๊ฐ ํ๋ก๊ทธ๋จ ์์ ๋ถํฐ ๋๊น์ง ์๋ช ์ ์ ์งํ ์ ์๋๋ก ํด์ค๋ค.
๋ฐ๋ผ์ ์ด ๋์ ๊ฐ์ด ์ฌ์ฉํ static final์ ํด๋น ๋ณ์๊ฐ ์ ๋ ๋ณ๊ฒฝํ ์ ์๊ณ , ํ๋ก๊ทธ๋จ ์์ ๋ถํฐ ๋๊น์ง ์ด์ ์๋ ๊ฒ์ ๋ปํ๋ฉฐ, ์์ ํํ ์ ์ฌ์ฉํ๋ค.