본문 바로가기

JAVA 흥미를 더하다!

java의 오버로딩,오버라이딩 그리고 this,super 개념갖기!!

 java의 기초개념 잡을때 제일 아리송한 부분이 오버로딩(overLoading)와 오버라이딩(OverRiding)이며, this사용과 super사용입니다. 이부분을 정리하면서 책도 여러번 보고 인터넷도 찾아 보았습니다. 



정말! 핵 포인트 말하겠습니다. 오버로딩(OverLoading)은 같은 클래스 내에서 생성자든 메소드든 일정 원칙에 의해서 재 정의 한다는게 오버로딩(OverLoading)입니다.


오버라이딩(OverRiding)이란!! extends로 상속받은 상태에서  생성자든 메소드(method) 일정규칙에 의해 재 정의하여 사용 하는것을 오버라이딩입니다.


여기서 상속을 받았나 안받았나 따라서 오버라이딩(OverRiding)또는 오버로딩(OverLoding)입니다.


아래 예제: 매소드 오버로딩(OverLoding) 입니다.

다음 예제: 생성자 오버로딩(OverLoading)입니다.



Books라는 class안에 생성자를 public Book(); 여러번 오버로딩(Overloading)

하여습니디. 

오버로딩(overloading)은? 매개변수가 달라야 합니다.

생성자란? class이름이 Books로 되어 있으므로. 생성자는 꼭! Books사용하며

반환값(int,string,double,,,,,)을 갖지 않습니다. 


◎ this! 사용


1> this

public books(String titl, String auth, int no){

                      ↑  ↖

 this.titl = titl;   -> titl = titl;  표현하면 둘다 지역변수를 가르키게                                                     됩니다.

 this.auth =auth;  그래서 this는 빨강쪽 가르키는 변수입니다.

 this.no =no;

}


2> this

public books(String titl, int no){

   this(titl,"whois",no);   this는 Books 클래스 내에 이는 다른 생성자를 

                               호출합니다. (titl,"whois",no) 세개의 인자값을 

                               갖는 생성자를 호출합니다.

                                           

                      즉,public books(String titl,String auth, int no){}

}



K k = new K(10); 객체를 생성하였습니다. 결과는 두개가 나옵니다. 

생성자 J,매개변수 생성자B입니다 . 

항상 부모클래스에 기본생성자가 호출됩니다.


this,super 사용이 필요한 이유는 오버로딩(overloading)와 오버라이딩(overriding)때문입니다.

위 예제를 보시면 super(b)사용에 따라서 결과값이 다르다는걸 보실수 있습니다.

즉, super(b) 상속받은 extends J 곳을 가리킵니다. super는 상속받은 오버라이딩과 관계가 있게네요.



상속을 받은  EX는 super,title이 가리키는곳은 부모클래스(superclass)

의 title 입니다.  그리고 super.draw()은 부모 매소드 호출합니다.


this,super 결론은  오버로딩,오버라이딩의해서 this.super사용되어지는 꼴이 되었네요. this은 자기 객체와 매소드  가리킬때, super은 부모 객체, 메소드 가리킬때 사용입니다.