객체 지향의 재사용성

jinkyung·2021년 1월 15일
0

JAVA2

목록 보기
16/35

재사용의 방법 - 상속, 포함관계

1)포함 : 필통이라는 클래스에 볼펜 연필 등의 객체를 필요하면 많이 넣고 필요없으면 뺄 수 있는 것

= 내 클래스에 다른 클래스를 포함시켜서 쓰겠다

장점 : 관계가 light => 끊어버리기 쉽다 / 필요한 리소스에 집중

그래서 포함관계가 더 많이 쓰인다.

2)상속 - 객체지향에서 부담스러운 작업

장점 : 큰 노력없이 기능확보가 쉽다

단점 : 잘못 설계하면 물려받는다

리소스가 크다

불필요한 기능 포함

프레임워크 설계자에게는 상속이 필수이지만 일반 프로그래머들은 필요할 때만 쓴다.

has A 포함관계

package ex03.inheritance.hasA08;
/*
경찰이
이미 만들어져있는 총 클래스의 기능을 사용하고 싶을 때 
1) is A(is kind of)		- 상속 
  경찰은 총이다(경찰은 총의 한 종류이다)
2) has A				- 포함 
 경찰은 총을 가지고 있다 
 
*/

public class PoliceMain {

	public static void main(String[] args) {
		NursePolice nurse = new NursePolice();
		nurse.wearUniform();
		nurse.checkThermometer();
		
		DetectivePolice detective = new DetectivePolice();
		detective.shot();
		detective.handCuff();
		detective.wearUniform();

	}
}
내용을 입력하세요.

package ex03.inheritance.hasA08;

public class DetectivePolice extends Police {
	private Gun gun = new Gun();  	//(필드로) 포함 , 상속이 아님. 필요없으면 빼버리면 됨.
									//다른 클래스에 많은 영향을 주지 않음.
									//덜 부담스럽다.
	
	void shot() {
		gun.shot();
	}
	
	void handCuff() {
		System.out.println("SNAP!");
	}
	
	
}

package ex03.inheritance.hasA08;

public class Police {
	
	void wearUniform() {
		System.out.println("stylish!");
	}
}

package ex03.inheritance.hasA08;

public class NursePolice extends Police {
	
	void checkThermometer() {
		System.out.println("36.5");
	}
	
	
}

package ex03.inheritance.hasA08;

public class Gun {

	
	void shot() {
		System.out.println("BBANG!");
	}
}

is A 상속 (is kind of)

package ex03.inheritance.iskindof07;
/*
경찰이
이미 만들어져있는 총 클래스의 기능을 사용하고 싶을 때 
1) is A(is kind of)		- 상속 
  경찰은 총이다(경찰은 총의 한 종류이다)
2) has A				- 포함 
 경찰은 총을 가지고 있다 
 
*/

public class PoliceMain {

	public static void main(String[] args) {
		NursePolice nurse = new NursePolice();
		nurse.checkThermometer();
		nurse.handCuff();
		nurse.shot();		//간호사가 총을 쏘면 안됨..

	}
}

package ex03.inheritance.iskindof07;

public class Police extends Gun{	//경찰은 총이다 --> 문제가 생길수도! 
	
	void handCuff() {
		System.out.println("SNAP!");
	}
}

package ex03.inheritance.iskindof07;

public class NursePolice extends Police {
	void checkThermometer() {
		System.out.println("36.5");
	}
	
	
}
package ex03.inheritance.iskindof07;

public class Gun {

	
	void shot() {
		System.out.println("BBANG!");
	}
}

0개의 댓글

관련 채용 정보