210127_JAVA 오버라이딩

정재현·2021년 1월 27일
0

TIL

목록 보기
57/80

오늘도 어제에 이어서 오버라이딩에 들어간다.
오늘은 오버라이딩의 일반화와 호출방법 등을 알아본다.
이번챕터에서는 오버라이딩의 개념적인 부분에 초점을 맞추고, 다음 챕터에서 응용에 들어간다.

일반화는 그냥 어제와 같이 main 코드에서 상위클래스, 하위클래스1, 하위클래스2를 인스턴스화 시키고
(안에 메소드는 상속될수록 오버라이딩된 상태) 참조변수를 통해 각 메소드를 호출하면
하위클래스2의 오버라이딩한 메소드로 호출된다는 것이였다.

내부에서 호출하는 방법도 있다.
바로 super키워드를 사용하는 방법.
간단하다 ^^
github: https://github.com/jeong-jaehyeon/JavaProject/blob/javaExercise/src/YummyCakeSuper.java

super는 상위 클래스의 생성자를 호출할 때 쓰일수 있지만, 상위 클래스의 오버라이딩된 메소드를 호출할 때도 사용가능하단 점! 알고가자.

그렇다면 변수도 오버라이딩이 될까?
다음 소스코드를 통해 알아보자!!
github: https://github.com/jeong-jaehyeon/JavaProject/blob/javaExercise/src/YummyCakeSize.java
결론을 말하면 변수는 오버라이딩이 되지 않는다.
따라서 '참조변수의 형'에 따라서 접근하는 변수가 되는 것이다.
아 근데 코드 좀 꼬았다고 머리를 꽁꽁싸맸다.

cake2.showCakeSize를 호출했는데 왜 치즈케이크의 사이즈가 나오지?

	CheeseCake2 cheeseCake = new CheeseCake2(5, 7);
        Cake2 cake2 = cheeseCake; // 치즈케이크가 참조하는 것을 cake2도 참조함.

이렇게 대입할 수 있는건 알겠는데,,

내가 알기론 참조변수의 형에 따라서 해당 클래스의 변수에 접근가능한 것으로 아는데..
지금 머리가 안돌아가나..
이 부분은 내일 다시 한번 봐야겠다 ㅠㅠ

오늘의 코멘트: 오랜만에 야근을 하고 나니 너무 졸려서 잠깐 누웠는데 새벽에 깨서 작성했다.
일어나서 '아.. 힘든데 다시잘까..' 라고 유혹에 혹했지만 정신차리고 샤워하고 일어나서 TIL를 진행하게 되어 뿌듯한데 아 저거 뭐지.. =_=

profile
"돈받고 일하면 프로다"

0개의 댓글