본문 바로가기

Java/java 기초

final

public class mainClass {
	public static void main(String[] args) {
		MyClass cls = new MyClass();
		
		cls.method();
		cls.method();
		
		MyClass cls1 = new MyClass();
		System.out.println();
		//멤버 변수는 초기화되서 처음으로 돌아가지만 static은 그대로다.
		cls1.method();
		cls1.method();
		
		//상수
		//대문자로 표현하기
		//가독성을 위해 대문자로 선언한다.
		final int NUMBER = 3;
		
//		num = NUMBER;
		
//		MyClass mcls = new YouClass();
		Object mcls = new YouClass();
		
		MyClass my = (MyClass)mcls;
		YouClass yo = (YouClass)my;
		
		//안됨
//		YouClass ycl = new YouClass();
//		
//		MyClass my = (MyClass)ycl; // 불가능
//		
		// NUMBER = 5;  에러 발생 final로 선언하면 새로 변경이 불가능하다.
	}
}

//final을 붙이는 순간 상속이 불가능하다 상속 금지
//final class MyClass{
class MyClass{
	private int number; //member 변수
	public static int strNumber; // static 변수 
	
	//오버라이딩 금지
	public final void method() {
		int num = 0;	//local 변수
		num++;
		this.number++;
		MyClass.strNumber ++;
		
		System.out.println("num = " + num);
		System.out.println("number = " + number);
		System.out.println("strNumber = " + strNumber);
	}
}

class YouClass extends MyClass{
//	오버라이딩 금지
//	public void method() {
//		
//	}
}