오늘은 상속 공부했는데 참 좆같았음
이해가 잘 안가는 느낌이 너무 큼
저 코드에서 Cal이 부모 클래스, Cal3이 Cal을 상속한 클래스
결과값에 첫 줄은 Cal이고 인풋값 없으니 Cal init만 나오는 건 이해함, 둘째 줄도 마찬가지
3, 4번째 줄도 Cal3 클래스 중 sum, minus 하나씩 뽑은 거니까 3 1 나오는 거 ㅇㅋ
근데 super 개념이 잘 이해가 안감
this도 어제 분명히 이해한 것 같았는데 오늘 보니까 또 아리송함
내일 그냥 복습만 해야할듯 아
이형은 나보다 열심히하네 난 손 놨는데
ㄴㄴ 양으로 따지면 여태까지 한 거 하루종일 배우는 애들 2일 한 거랑 비슷할듯
역시 자바 선택자 ㄷ ㄷ
super = 부모 생성자 호출
그럼 super(v1, v2) = 단순히 Cal 클래스의 v1, v2 호출? 그럼 v1, v2를 쓰려면 무조건 super을 써야 하는 거임? extends는 sum과 리턴 값만 쓰는 거고?
super(v1, v2) 는 Cal(int v1, int v2) 를 호출하는거고 super 호출 안하고 v1, v2 를 쓰면 int 기본값인 0이 들어있겠지 ㅇㅅㅇ
super 유무 차이가 뭔지 궁금해서 지우고 돌려봐도 그냥 에러 떠서 몰랐는데 그럼 이론적으론 super가 없으면 Cal3의 리턴값 v1-v2는 0-0의 개념이 되는 거야?
에러가 떠? 그럼 Cal() 생성자 만들고 super() 로 해보셈 ㅇㅅㅇ
자손 클래스의 생성자에서 부모 클래스의 기본 생성자를 자동으로 호출함 근데 지금 부모 클래스에는 기본 생성자가 없어서 직접 호출안해면 에러가 나는거임
super - 유전자
this는 걍 자기 자신이고 super는 상속 받은 부모 좀 더 깊게 설명하면 this는 자기 자신의 객체(인스턴스) 이고 super는 자기 자신의 객체(인스턴스)의 부모 객체(인스턴스) 또 this나 super는 객체 이기도 하면서 객체의 생성자 이기도 함
지금 너가 헷갈리는 이유는 클래스와 객체를 분리해서 생각하는 개념이 부족해서 그런데 하다보면 익숙해짐
어렵다 어려워..
일단 클래스랑 객체(인스턴스) 개념만 좀 더 명확해지면 this나 super도 이해하기 쉬울거야