본문 바로가기

Java/Java 상속

this & super

728x90
반응형

this 는 저번에도 배웠다시피 자기자신, 그것도 instance를 가르킬때 써주는 기능이다. 

아 솔직히 설명하라하니까 모르겠다. 다시 보고 와야지

 

// 내가 마지막 정리로 class가 instance화 되었을때 그 instance를 가르키는게 this라고 적었다. 그냥 이렇게 외우는게 빠를듯

 

여튼 super는 자기 자신이 아니라 상속받고 있는 부모를 가르키는 기능이다. 

 

그래서 이런 식으로 써줄 수 있다. 

class Cal{
	public int sum(int v1, int v2) {
		return v1+v2;
	}
	
	//Overloading
	public int sum(int v1, int v2, int v3) {
		
		// this 는 자기자신, 그것도 instance를 가르키는 것. 
		return this.sum(v1, v2)+v3;
	}
}

class Cal3 extends Cal{
	public int minus(int v1, int v2) {
		return v1-v2;
	}

	//Overriding
	public int sum(int v1, int v2) {
		System.out.println("Cal3!");
		
		//.super는 부모의 method를 가져오라는 것을 의미함
		return super.sum(v1, v2);
	}
}

public class InheritanceApp {

	public static void main(String[] args) {
		Cal c = new Cal();
		System.out.println(c.sum(2, 1));
		
		Cal3 c3 = new Cal3();
		System.out.println(c3.minus(3, 10));
		System.out.println(c3.sum(2, 1));
		}
	
}

	

Overriding 을 .super 을 통해서 가져온거다. 

.super는 부모의 method를 가져오라고 호출하는것. 

 

그 위에 쓴 this 는 Cal의 sum, 즉 자기자신의 method를 가져오라고 시키는것이기 때문에 저렇게 써주면 된다. 

 

 

 

728x90
반응형

'Java > Java 상속' 카테고리의 다른 글

상속과 생성자  (0) 2020.12.01
Overriding vs Overloading  (0) 2020.12.01
Overriding  (0) 2020.12.01
Java에서 상속  (0) 2020.12.01