모자가싫은그루트
42
2019-07-12 23:01:33
2
193

java 상속 관련 질문드려요


이제 자바 시작한 자린이입니다


상속 공부하는 중인데


상속과 final 필드 관계에 대해서 이해가 좀 안가서 질문드려요


CASE 1. 부모 클래스에서 final로 선언한 필드를 자식 클래스에서 다시 정의하는 경우

CASE 2. 부모클래스에서 final static으로 상수 선언한 필드를 자식클래스에서 다시 정의하는 경우


둘다 자식클래스에서 다시 정의해도 (필드도 오버라이딩이라고 하는게 맞는지는 모르겠습니다만)

정상적으로 실행이 되는데 안되야 정상 아닌가요..??


public class parent {
	public String name = "groot";
	public int age ;
	public final static int id = 12345;
	
	void method1() {
		System.out.println("method 1_parent");
		
	}
	final void method2() {
		System.out.println("method 2");
		
	}
}


public class child extends parent {

	public String name = "gro000000000ott";
	public int age = 40;
	public int id = 1234444;
	
	void method1() {
		System.out.println("method1 child");
	}
	void method4() {
		System.out.println("child");
	}
	
}






public class test {
	public static void main(String[] args) {
		
		parent test1 = new parent();
		parent test2 = new child();
//		child test3 = new parent();
		child test4 = new child();
		
		System.out.println(test1 instanceof parent);
		System.out.println(test1 instanceof child);
		
		System.out.println(test2 instanceof parent);
		System.out.println(test2 instanceof child);
		
		System.out.println(test4 instanceof parent);
		System.out.println(test4 instanceof child);
		
		test1.method1();
		test2.method1();
		test4.method1();

		test4.method4();
		
		System.out.println(test1.name);
		System.out.println(test1.age);
		System.out.println(test1.id);
		
		System.out.println(test2.name);
		System.out.println(test2.age);
		System.out.println(test2.id);
		
		System.out.println(test4.name);
		System.out.println(test4.age);
		System.out.println(test4.id);
	}

}


결과 값
true
false
true
true
true
true
method 1_parent
method1 child
method1 child
child
groot
0
12345
groot
0
12345
gro000000000ott
40
1234444


0
0
  • 답변 2

  • yeori
    550
    2019-07-13 07:20:36

    클래스에 선언한 필드(멤버변수)는 오버라이딩 되지 않습니다~

    1
  • 모자가싫은그루트
    42
    2019-07-13 16:39:34

    yeori  그렇다면 case2 처럼 부모클래스에서 상수로 정의한 변수에 대해서 자식 클래스에서 다시 정의하는데 왜 에러가 나지 않는걸까요??

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.