프로그래밍 언어/Java

java 6강 상속이란?

happy_life 2021. 11. 7. 11:15
상속이란?

 

상속은 무엇인가를 물려준다는 의미입니다. 어떤 객체가 있을 때 그 객체의 필드(변수)와 메소드를 다른 객체가 물려 받을 수 있는 기능을 상속이라고 합니다.

 

 

예제코드

class Calculator{
	
	int left, right;
		
	
	public void setOprands(int left, int right) {
		this.left = left;
		this.right = right;
	}
	
	public void sum() {
		System.out.println(this.left + this.right);
	}
}


public class cal {

	public static void main(String[] args) {
		
		Calculator c1 = new Calculator();
		c1.setOprands(10, 20);
		c1.sum();
		//c1.subtract(); //!--없는 메소드
	}
}

 

예를들어, calculator라는 class 안에는 subract라는 메소드가 없는데요 따라서 이런 subtract 메소드를 만들어주고 싶다고 가정해보겠습니다.

 

물론 클래스 내에 직접 메소드를 만들면 되겠지만 객체에 메소드를 추가하는 것이 어려운 경우들이 있습니다.

 

1.  객체를 자신이 만들지 않아, 소스를 변경하기 어려운 경우 

 

2. 객체가 다양한 곳에서 활용되고 있는데, 메소드를 추가하면 다른 곳에서는 불필요한 기능이 포함될 수 있는 경우

 

 

따라서 기존의 객체를 그대로 유지하면서 어떤 기능을 추가하는 방법을 생각하게 되었는데, 그 아이디어가 바로 상속이입니다.

 

이때, 기존의 객체는 기능을 물려준다는 의미에서 부모 객체가 되고 새로운 객체는 기존 객체의 기능을 물려받는다는 의미에서 자식 객체라고 합니다. 

 

상속 코드 예제

class Calculator{
	
	int left, right;
		
	public void setOprands(int left, int right) {
		this.left = left;
		this.right = right;
	}
	
	public void sum() {
		System.out.println(this.left + this.right);
	}
}

class substractableCalculator extends Calculator {
	public void substract() {
		System.out.println(this.left - this.right);
	}
}
public class cal {

	public static void main(String[] args) {
		
		//!--기존의 class Calculator 의 객체
		Calculator c1 = new Calculator();
		c1.setOprands(10, 20);
		c1.sum();
	
		//!--Calculator를  상속한 substractableCalculator 의 객체
		substractableCalculator c2 = new substractableCalculator();
		c2.setOprands(10, 20);
		c2.sum();
		c2.substract();
		
	}
}

출력예시

 

Q1) class substractableCalculator extends Calculator 의 의미?

 

이는 substractableCalculator 라는 class 가 Calculator 클래스를 확장시킨다는 의미입니다.

즉 기본적으로 Calculator 의 속성을 가진 채 추가적인 요소를 확장한다는 것입니다. (ex) 뺄셈)

 

Q2)class substractableCalculator의 객체 c2는 왜 setOprands() , sum() 메소드를 사용할 수 있나요?

 

substractableCalculator는 Calculator를 확장시킨 것이므로 Calculator안에 있는 모든 메소드를 사용할 수 있는 것입니다.

 

 

 

오늘은 java의 상속 에 관한 기본적인 개념을 알아보았습니다.

혹시 헷갈리시는 부분이 있으시다면 댓글 남겨주세요

감사합니다!