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은 부모 객체, 메소드 가리킬때 사용입니다.