h-i-s-t-o-r-y

[Java] 기타제어자 - final / abstract 본문

Java

[Java] 기타제어자 - final / abstract

H' 2021. 7. 17. 23:13
package days18;

public class Ex09 {
	
	//필드
	//public final double PI = 3.141592;	//명시적 초기화
	
	/*
	//The blank final field PI may not have been initialized
	public final double PI;	//0.0? ㄴㄴ 파이널은 기본값 초기화 인식안함
	//생성자 통해서 초기화
	Ex09(){
		PI=3.141592;
	}
	Ex09(double x){
		PI=x;
	}
	*/
	
	
	public static final double PI;
	//static이라 생성자 초기화 XXX
//static 초기화 블럭
	static {
		// 다른 static도 여기 초기화..
		PI = 3.14;
	}
	
	
	// 프로그램 시작을 하는 시작개체
	public static void main(String[] args) {
		// p.345 final 키워드 설명
		// - 사전적의미 : 마지막의, 변경될 수 없는
		// - 변수, 메서드, 클래스
		
		// 2) 멤버변수 (인스턴스변수)
		Ex09 obj = new Ex09();
		// The final field Ex09.PI cannot be assigned
		//obj.PI = 3.14;
		System.out.println(obj.PI);
		
		// 1) 지역변수
		//final double PI = 3.141592;
		//System.out.println(PI);
		//PI = 3.14;	X
		
		int x = 10;
		int result = change(x);	//인자,인수,arguments
		System.out.println(result);
		

	}//main
						//매개변수==parameter
	public static int change(final int x) {	//fianl->값을 바꾸지 마라
		//x += 100;
		return x;
	}
	
	
}//class
package days18;

public class Ex09_02 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}//main

}//class



/*
// final 클래스는 변경,확장될 수 없는 클래스
// 최종클래스 이기에 자식클래스를 가질 수 없다.
final class FinalTest{
	void aaa() {
		System.out.println("> aaa()...");
	}
	// final 메서드 오버라이드 XXX
	// 자식클래스에서 재정의 될수없는 최종 메서드
	final void bbb() {
		System.out.println("> bbb()...");
	}
}//class


class ChildFinalTest extends FinalTest{

	@Override	//재정의
	void aaa() {
		System.out.println("> overriing aaa()...");
	}
	
	// bbb()
	
	
	
}//class
*/
package days18;

public class Ex10 {

	public static void main(String[] args) {
		// p.347 abstract 키워드 - 추상의, 미완성의
		//					- 클래스, 메서드
		
		/*
		// obj 객체 선언 가능
		AbstractTest obj;
		//		객체 생성X (인스턴스화 X)
		obj = new AbstractTest();
		*/
		
		// 추상메서드 없어도 추상클래스로 만들수있음
		// 이 클래스로 객체 생성하지 말라는 의도
		
		
	}//main

}//class


//추상클래스
abstract class AbstractTest{
	String message;
	
	void stop() {
		System.out.println("> stop()...");
	}//stop
	
	//추상메서드
	abstract void move();	//함수 원형/프로토타입/선언부
	//구현부 아직 어떻게 구현할지 안정했음. 선언부만 작성함.
	//-> {} 몸체구현 안된 불완전한 메서드 (abstract
	//-> 자동으로 설계덜된 불완전한 클래스 (abstract
	
}//class
Comments