본문 바로가기

Java/Java 상속

Overriding

728x90
반응형

아까 쓴 코드는 그냥 Cal 의 기능을 연장해왔을 뿐 더해준 기능이 없다. 

활용을 위해서는 연장을 해줘야한다

 

class Cal{
	public int sum(int v1, int v2) {
		return v1+v2;
	}
}

class Cal3 extends Cal{
	public int minus(int v1, int v2) {
		return 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));
		}
	
}

 

 

이걸 보면 Cal3 에다가 minus의 기능을 더해줬다. 이제 저기서는 minus 기능, sum 기능을 둘 다 호출해서 사용할 수 있다. 

 

 

이렇게 부모가 가지고 있지 않은 기능을 추가해서 사용할수도 있고, 

 

class Cal{
	public int sum(int v1, int v2) {
		return v1+v2;
	}
}

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!");
		return 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));
		}
	
}

이미 부모가 가지고 있는 sum이라는 기능도 가져와서 거기에 새로운 내용을 추가할 수도 있다.

위 코드의 경우 Cal3을 거쳐 계산했다는 의미로 Cal3 문구를 출력하게 했다.

 

이걸 Overriding이라고 부른다. 

 

 

 

728x90
반응형

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

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