쥔장에겐 완전 사랑하는 사람이 있어요 ^-^♡



super까지 왔다. 상속을 했다는 얘기지...
얘는 왜 하는가??? 어따 쓰는 놈인가.. 필요한가?

Test2 클래스를 Test3이 상속 받았다고 치자.

class Test2{
 int sum = 0;
 int num;
 static int tot_sum = 0;

 void calc(int amt){
  sum = sum + amt;
  tot_sum = tot_sum + amt;
 }
 
 static int getTotSum(){
  return tot_sum;
 }
}

이 놈이 Test3

public class Test3 extends Test2{
 int bal;
 Test3(int num, int bal) {
  this.bal = bal;
  
 }
}

지금은 Test2를 상속받는데 super고 나발이고 필요가 없다.

이런 경우야 필요 없는데 근데 만약에 Test2에 생성자가 있다고 치자.
class Test2{
 int sum = 0;
 int num;
 static int tot_sum = 0;
 
 Test2(int num){
  this.num = num;
 }

 
 void calc(int amt){
  sum = sum + amt;
  tot_sum = tot_sum + amt;
 }
 
 static int getTotSum(){
  return tot_sum;
 }
}

그리고 Test3에서 그냥 상속받고 super 안 했다고 하면
예쁜 에러에 직면하게 된다. 굳ㅋ

자바 컴파일러가 컴파일을 할때 생성자의 첫 번째 명령문이 슈퍼클래스의 생성자 호출문이 아니면 자동으로슈퍼클래스의
빈 생성자 호출문을 추가 하기 때문이라고 한다.

마음씨 좋은 양반이 Test2를 만들때 빈 껍따구 생성자를 만들어 줬음 에러는 안 날 꺼시다.

Test2(){
  
 }

이렇게 말이지.. 추가가 되어 있음 얼마나 좋을까..

그런데 상속받는 주제에 슈퍼클래스한테 이거 추가해 주삼! 이라고 할 수는 없는 노릇이니 스스로 극복해야 한다.
그래서 Test3은 이렇게 바뀌어야 한다.


public class Test3 extends Test2{
 int bal;
 Test3(int num, int bal) {
  super(num);
  this.bal = bal;
  
 }
}

보다시피.. 별거는 없다.
슈퍼클래스의 이름으로 호출 안 하고 super 라고 호출한다.

상속받기 힘들다. 아무나 받는게 아니군...
저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by Keizwer Keiz

댓글을 달아주세요:: 네티켓은 기본, 스팸은 사절


카테고리

:: Keiz Story :: (349)
TechNical (197)
Another (145)
ENG, JPN Lang. (7)

Statistics Graph
Total : 508,531
Today : 4 Yesterday : 43

달력

«   2017/08   »
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

Google

글 보관함

0
hit counter