‡πŸ‘©‍πŸ’» ‡/º Java

[Java] 좔상 클래슀 vs μΈν„°νŽ˜μ΄μŠ€

Trudy | 솑연 2023. 11. 27. 20:35

좔상 ν΄λž˜μŠ€λŠ” 싀체 ν΄λž˜μŠ€λ“€μ˜ 곡톡적인 νŠΉμ„±μ„ μΆ”μΆœν•˜μ—¬ μ„ μ–Έν•œ 클래슀λ₯Ό λœ»ν•œλ‹€. 싀체 ν΄λž˜μŠ€λŠ” 좔상 클래슀λ₯Ό μƒμ†ν•˜μ—¬ 좔상 클래슀의 ν•„λ“œμ™€ λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•  수 μžˆλ‹€.

 

μΈν„°νŽ˜μ΄μŠ€λŠ” μΌμ’…μ˜ 좔상 클래슀둜, 클래슀λ₯Ό μœ„ν•œ 틀과도 κ°™λ‹€. 좔상 ν΄λž˜μŠ€μ— λΉ„ν•΄ 좔상화 정도가 λ†’λ‹€. 

κ³΅ν†΅μ μœΌλ‘œ λ§Œλ“€μ–΄μ•Ό ν•˜λŠ” λ©”μ†Œλ“œκ°€ μžˆλ‹€λ©΄ μ•„λ¬΄λŸ° κ΅¬ν˜„ 없이 λ©”μ†Œλ“œ ν•¨μˆ˜λ§Œ μ„ μ–Έν•œλ‹€. 

 

좔상 ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€λŠ” λ‘˜λ‹€ μ‚¬μš©ν•  λ•Œ 무쑰건 λ©”μ†Œλ“œλ₯Ό μ˜€λ²„λΌμ΄λ”©μ„ ν•΄μ•Όν•˜κΈ° λ•Œλ¬Έμ— κ΅¬ν˜„μ²΄λ§Œ λ¨Όμ € λ§Œλ“€λ©΄ μ—λŸ¬κ°€ λ‚œλ‹€.  (μΈν…”λ¦¬μ œμ΄: Alt+Insert -> Generate -> Implements Methods둜 λ“€μ–΄κ°€λ©΄ μžλ™ μ˜€λ²„λΌμ΄λ”© κ°€λŠ₯)

 

좔상 클래슀; abstract - extends

싀체 ν΄λž˜μŠ€λŠ” 좔상 클래슀λ₯Ό μƒμ†ν•˜μ—¬ 좔상 클래슀의 λͺ¨λ“  νŠΉμ„±(λ³€μˆ˜μ™€ λ©”μ†Œλ“œ)을 λ¬Όλ €λ°›κ³ , 좔가적인 νŠΉμ„±μ„ κ°€μ§ˆ 수 μžˆλ‹€. 

 

좔상 클래슀의 μž₯점

1. ν΄λž˜μŠ€λ“€μ˜ κ³΅ν†΅λœ ν•„λ“œμ™€ λ©”μ†Œλ“œμ˜ 이름을 톡일화 ν•  수 μžˆλ‹€. 

2. 싀체 클래슀λ₯Ό μž‘μ„±ν•  λ•Œ μ‹œκ°„μ΄ λ‹¨μΆ•λœλ‹€. 

 

λ‹€μŒμ€ 좔상 클래슀의 μ˜ˆμ‹œμ΄λ‹€. 

//ν•Έλ“œν° 좔상 클래슀 

public abstract class Phone {
	public String owner;
    
    public Phone(String owner) {
    	this.owner = owner;
    }
    
    public void turnOn(){
    	System.out.println("폰 전원을 ν‚΅λ‹ˆλ‹€");
    }
    
    public void turnOff(){
    	System.out.println("폰 전원을 λ•λ‹ˆλ‹€");
    }
}

 

// 슀마트폰 싀체 클래슀

public class SmartPhone extends Phone {

    public SmartPhone(String owner) {
    	super(owner);
    }
    
    public void Internet(){
    	System.out.println("인터넷 검색이 κ°€λŠ₯ν•˜λ‹€. ");
    }
}

 

좔상 ν΄λž˜μŠ€μ™€ 싀체 ν΄λž˜μŠ€κ°€ μœ„μ™€ 같을 λ•Œ λ‹€μŒκ³Ό 같이 μ΄μš©ν•  수 μžˆλ‹€.

//Phone p = new Phone(); //좔상 ν΄λž˜μŠ€λŠ” 객체λ₯Ό λ§Œλ“€ 수 μ—†λ‹€. 

SmartPhone sp = new SmartPhone("trudy");

sp.turnOn(); //Phone의 λ©”μ†Œλ“œλ„ μ‚¬μš©ν•  수 있음
sp.internet();

μΈν„°νŽ˜μ΄μŠ€; interface - implements

 

좔상 ν΄λž˜μŠ€λŠ” λ³€μˆ˜, μƒμ„±μž, λ©”μ†Œλ“œλ₯Ό λͺ¨λ‘ κ°€μ§€μ§€λ§Œ, μΈν„°νŽ˜μ΄μŠ€λŠ” μƒμˆ˜μ™€ 좔상 λ©”μ†Œλ“œλ§Œ κ°–λŠ”λ‹€. 

μΈν„°νŽ˜μ΄μŠ€λŠ” 객체 μ‚¬μš© 방법을 μ •μ˜ν•œ κ²ƒμ΄λ―€λ‘œ μ‹€ν–‰ μ‹œ 데이터λ₯Ό μ €μž₯ν•  수 μžˆλŠ” μΈμŠ€ν„΄μŠ€ λ˜λŠ” 정적 λ³€μˆ˜λ₯Ό μ„ μ–Έν•  수 μ—†λ‹€. 

public interface RemoteControl {
	public void turnOn();
    public void turnOFf();
}

 

public class Television implements RemoteControl {
	public void turnOn(){
    	System.out.println("TVλ₯Ό μΌ­λ‹ˆλ‹€.");
    }
    	public void turnOff(){
    	System.out.println("TVλ₯Ό λ•λ‹ˆλ‹€.");
    }
}