λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

#1 Language πŸ‘„/1-4 JAVA

[JAVA] 상속 (Inheritance)

μƒμ†μ΄λž€??

 

  • ~은 ~이닀
  • 상속은 ν΄λž˜μŠ€κ°„μ˜ λΆ€λͺ¨, μžμ‹κ°„μ˜ 관계 정리(javaλŠ” 단일 μƒμ†λ§Œ ν—ˆμš© ex) extends Tv, DVD{ }// error)
  • μžμ‹ν΄λž˜μŠ€μ—μ„œ λΆ€λͺ¨ν΄λž˜μŠ€λ₯Ό 상속 λ°›μ•„ λΆ€λͺ¨ν΄λž˜μŠ€μ— μžˆλŠ” ν•„λ“œ, λ©”μ†Œλ“œλ₯Ό 직접 μ‚¬μš© κ°€λŠ₯
  • μžμ†μ˜ 멀버 κ°œμˆ˜λŠ” 쑰상보닀 적을 수 μ—†λ‹€ (κ°™κ±°λ‚˜ λ§Žλ‹€)
  • μžλ°”μ—μ„œ 단일 상속은 ν—ˆμš©ν•˜μ§€λ§Œ, 닀쀑 상속은 μ‹€μ§ˆμ μœΌλ‘œλŠ” ν—ˆμš©ν•˜μ§€ μ•ŠμŒ. ν•˜μ§€λ§Œ InterfaceλΌλŠ” ν‚€μ›Œλ“œλ₯Ό μ΄μš©ν•˜μ—¬ 닀쀑 상속과 λΉ„μŠ·ν•˜κ²Œ ν™•μž₯의 κ°œλ…μœΌλ‘œ μ‚¬μš©
  • ExtendsλΌλŠ” ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ 단일 상속

 

μƒμ†μ˜ μž₯점
  • 상속을 ν†΅ν•˜μ—¬ κΈ°μ‘΄ 클래슀의 ν•„λ“œμ™€ λ©”μ†Œλ“œλ₯Ό μž¬μ‚¬μš©
  • κΈ°μ‘΄ 클래슀의 일뢀 λ³€κ²½ κ°€λŠ₯
  • λ³΅μž‘ν•œ GUI ν”„λ‘œκ·Έλž¨μ„ λΉ λ₯Έ μ‹œκ°„μ— μž‘μ„±
  • 이미 μž‘μ„±, κ²€μ¦λœ μ†Œν”„νŠΈμ›¨μ–΄ μž¬μ‚¬μš©
  • μ‹ λ’°μ„± μžˆλŠ” μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό μ†μ‰½κ²Œ 개발, μœ μ§€ 보수
  • μ½”λ“œμ˜ 쀑볡을 쀄일 수 있음

 

μƒμ†μ˜ μ‚¬μš©
// Tv(λΆ€λͺ¨)클래슀
package Day03;

public class Tv {
	String company;
	int price;
	int size;
	
	void powerOn() {
		System.out.println("전원을 μΌ­λ‹ˆλ‹€");
	}
	
	void powerOff() {
		System.out.println("전원을 λ•λ‹ˆλ‹€");
	}
	
}
// SamsungTv (μžμ‹)클래슀
package Day03;

//SamsungTv ν΄λž˜μŠ€μ΄λ©΄μ„œ Tv클래슀의 ν˜•νƒœλ„ 포함
public class SamsungTv extends Tv{ //상속
	String ai;
	
	SamsungTv(String com, int pri, int si, String a){
		this.company = com;
		this.price = pri;
		this.size = si;
		this.ai = a;
	}
	
	void turnOnAi() {
		System.out.println("Hi λΉ…μŠ€λΉ„");
	}	
}
// LgTv (μžμ‹)클래슀
package Day03;

// LgTv ν΄λž˜μŠ€μ΄λ©΄μ„œ Tv클래슀의 ν˜•νƒœλ„ 포함
public class LgTv extends Tv{ // 상속
	String voiceCall;
		
	LgTv(String com, int pri, int si, String voi){
		this.company = com;
		this.price = pri;
		this.size = si;
		this.voiceCall = voi;	
	}
		
	void turnVoiceCall() {
		System.out.println("Hi ꡬ글");
	}	
}
// 상속 μ‚¬μš© μ˜ˆμ‹œ SamsungTv
package Day03;

public class _07_inherit {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		// SamsungTvκ°€ Tv클래슀λ₯Ό 상속받아 Tv클래슀의 ν•„λ“œμ™€ λ©”μ†Œλ“œλ₯Ό ν¬ν•¨ν•˜λŠ” ν˜•νƒœλ‘œ 생성
		SamsungTv samsungTv = new SamsungTv("μ‚Όμ„±", 300000, 47, "λΉ…μŠ€λΉ„");
		LgTv lgTv = new LgTv("LG", 250000, 52,"ꡬ글");
		
		// 상속받은 λΆ€λͺ¨ ν•„λ“œμ— μ ‘κ·Ό
		 System.out.println("이 TV의 μ œμ‘°μ‚¬λŠ” : " + samsungTv.company);
		 System.out.println("이 TV의 가격은 : " + samsungTv.price);
		 System.out.println("이 TV의 ν¬κΈ°λŠ” : " + samsungTv.size);
	
		 // μžμ‹ν΄λž˜μŠ€μ˜ 고유 ν•„λ“œ μ‚¬μš©
		 System.out.println("이 TV의 AIλŠ” : " + samsungTv.ai);
		 
		 // 상속받은 λΆ€λͺ¨ 클래슀의 λ©”μ†Œλ“œ μ ‘κ·Ό
		 samsungTv.powerOn();
		 samsungTv.powerOff();
		 
		 // μžμ‹ν΄λž˜μŠ€μ˜ 고유 λ©”μ†Œλ“œ μ‚¬μš©
		 samsungTv.turnOnAi();
	}

}
LIST

'#1 Language πŸ‘„ > 1-4 JAVA' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[JAVA] BigDecimal  (0) 2022.12.03
[JAVA] extends vs implements  (0) 2022.12.03
[JAVA] getter, setter  (0) 2022.12.03
[JAVA] μ ‘κ·Όμ œν•œμž (public, protected, private, default 차이)  (0) 2022.12.03
[Java] JDK vs JRE vs JVM  (0) 2022.11.29