πŸ—οΈμ†Œν”„νŠΈμ›¨μ–΄/πŸ“™java & Servlete & JSP

[μžλ°”/Java] μΈν„°νŽ˜μ΄μŠ€(interface)

Dev.Op 2021. 9. 5. 18:00
λ°˜μ‘ν˜•

κ°œλ… 정리 κΈ€.

 

잘 μ •λ¦¬λœ 글이 μžˆμ–΄ κ³΅μœ ν•΄λ³Έλ‹€.

https://limkydev.tistory.com/197

 

[JAVA] μžλ°” μΈν„°νŽ˜μ΄μŠ€λž€?(Interface)_이 κΈ€ ν•˜λ‚˜λ‘œ λ°•μ‚΄λ‚΄μž

1. μΈν„°νŽ˜μ΄μŠ€ κ°œλ…κ³Ό μ—­ν•  μΈν„°νŽ˜μ΄μŠ€....이 κΈ€ν•˜λ‚˜λ‘œ λ°•μ‚΄λ‚΄μž. (νšŒμ‚¬μ—μ„œ μ‘΄λŒ“λ§μ„ 많이 μ“°κΈ°λ•Œλ¬Έμ— μ—¬κΈ°μ„œλΌλ„ 반말둜 글을 써보고 μ‹ΆμŒ γ…Ž) μΈν„°νŽ˜μ΄μŠ€λŠ” 뭘까?? κ²°λ‘ λΆ€ν„° λ§ν•˜λ©΄, κ·Ήλ‹¨μ μœΌ

limkydev.tistory.com

 


μΈν„°νŽ˜μ΄μŠ€λŠ” 무엇인가?
κ·Ήλ‹¨μ μœΌλ‘œ λ™μΌν•œ λͺ©μ  ν•˜μ— λ™μΌν•œ κΈ°λŠ₯을 μˆ˜ν–‰ν•˜κ²Œλ” κ°•μ œν•˜λŠ” 것이 λ°”λ‘œ μΈν„°νŽ˜μ΄μŠ€μ˜ μ—­ν• μ΄μž κ°œλ…μ΄λ‹€.
 μ‘°κΈˆ 더 μœ μ‹ν•˜κ²Œ λ§ν•˜λ©΄, 
μžλ°”μ˜ λ‹€ν˜•μ„±μ„ κ·ΉλŒ€ν™”ν•˜μ—¬ κ°œλ°œμ½”λ“œ μˆ˜μ •μ„ 쀄이고 ν”„λ‘œκ·Έλž¨ μœ μ§€λ³΄μˆ˜μ„±μ„ 높이기 μœ„ν•΄ μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ‚¬μš©ν•œλ‹€. 
자 이게 λ¬΄μŠ¨λ§μΈκ°€? 

μ•Œμ•„μ•Όν•˜λŠ” κ°œλ…

μƒμˆ˜ : μΈν„°νŽ˜μ΄μŠ€μ—μ„œ 값을 μ •ν•΄μ€„ν…Œλ‹ˆ ν•¨λΆ€λ‘œ 바꾸지 말고 μ œκ³΅ν•΄μ£ΌλŠ” κ°’λ§Œ 참쑰해라 (μ ˆλŒ€μ )

μΆ”μƒλ©”μ†Œλ“œ : κ°€μ΄λ“œλ§Œ μ€„ν…Œλ‹ˆ μΆ”μƒλ©”μ†Œλ“œλ₯Ό μ˜€λ²„λΌμ΄νŒ…ν•΄μ„œ μž¬κ΅¬ν˜„ν•΄λΌ. (κ°•μ œμ )

λ””ν΄νŠΈλ©”μ†Œλ“œ : μΈν„°νŽ˜μ΄μŠ€μ—μ„œ 기본적으둜 μ œκ³΅ν•΄μ£Όμ§€λ§Œ, λ§˜μ— μ•ˆλ“€λ©΄ 각자 κ΅¬ν˜„ν•΄μ„œ 써라. (선택적)

μ •μ λ©”μ†Œλ“œ : μΈν„°νŽ˜μ΄μŠ€μ—μ„œ μ œκ³΅ν•΄μ£ΌλŠ” κ²ƒμœΌλ‘œ 무쑰건 μ‚¬μš© (μ ˆλŒ€μ )


문법

package μΈν„°νŽ˜μ΄μŠ€;

public class Car {
	
	final String type = "μ „κΈ°μ°¨";
	
	int size = 3; // 1: small ~ 5: big
	
	public abstract void start();
	
	public void stop();
	
	public default void music() {
		System.out.println("listen the music");
	}
	
}

문법은 λ‹€μŒκ³Ό κ°™λ‹€.

 

final μ΄λž€?

값을 λ°”κΏ€ 수 μ—†λ‹€λŠ” 것을 μ˜λ―Έν•œλ‹€.

 

interface νŠΉμ„±μƒ  2가지가 μžˆλ‹€.

1. λ³€μˆ˜λ₯Ό μ„ μ–Έν•  수 μ—†λ‹€. μƒμˆ˜λ₯Ό μ„ μ–Έν•΄μ•Ό ν•œλ‹€.(λΆˆλ³€ν•˜λŠ” κ°’)

final을 톡해 μƒμˆ˜λ₯Ό μ„ μ–Έν•œλ‹€.

final은 μƒλž΅μ΄ κ°€λŠ₯ν•˜λ‹€. 

 

2. λ©”μ†Œλ“œ μ„ μ–Έ κ°€λŠ₯ν•˜λ©°, 좔상 λ©”μ†Œλ“œλ§Œ μ„ μ–Έ κ°€λŠ₯ν•˜λ‹€.

ν•˜μ§€λ§Œ 졜근 JAVA 8 이후 μ—…κ·Έλ ˆμ΄λ“œμ—μ„œ, 좔상 λ©”μ†Œλ“œλ₯Ό μ œμ™Έν•œ 일반 λ©”μ†Œλ“œλ„ κ΅¬ν˜„ν•  수 있게 λ˜μ—ˆλ‹€.

μ΄λ–ˆ defaultλ₯Ό μ΄μš©ν•œλ‹€.

μ—¬κΈ°μ„œ defaultλŠ” μ ‘κ·Όμ œν•œμžκ°€ μ•„λ‹ˆλΌ μΈν„°νŽ˜μ΄μŠ€ λ‚΄λΆ€μ—μ„œ λ”°λ‘œ μ‘΄μž¬ν•˜λŠ” κ°’μœΌλ‘œ μƒκ°ν•˜λ©΄ 쉽닀.

좔상 λ©”μ†Œλ“œλŠ” abstractλ₯Ό μ΄μš©ν•΄μ„œ λ‚˜νƒ€λ‚Έλ‹€. ν•˜μ§€λ§Œ μƒλž΅μ΄ κ°€λŠ₯ν•΄μ„œ μ—†μ΄μ‚¬μš©ν•΄λ„ 좔상 λ©”μ†Œλ“œλ‘œ μ •μ˜λœλ‹€.

(ex) void stop();

 


μ•Œμ•„λ‘λ©΄ 쒋은 팁

 

package μΈν„°νŽ˜μ΄μŠ€;

public class bmw_320d implemnts car, vehicle{
	
	public void x();
	public void y();
	
}

μ—¬κΈ°μ„œ bmw_320d ν΄λž˜μŠ€λŠ” car 와 vehicle μΈν„°νŽ˜μ΄μŠ€ 2개λ₯Ό μƒμ†λ°›λŠ”λ‹€. 즉, class μ—μ„œλŠ” 1개만 상속받을 수 μžˆλŠ” 반면, μΈν„°νŽ˜μ΄μŠ€μ˜ 경우 μ—¬λŸ¬ 개λ₯Ό 상속받을 수 μžˆλ‹€.

 

ν•˜μ§€λ§Œ 좔상 λ©”μ†Œλ“œλŠ” νŠΉμ„±μƒ 상속 μ‹œ, 각 λ©”μ†Œλ“œλ“€μ— λŒ€ν•΄ μž¬μ •μ˜λ₯Ό ν•΄μ€˜μ•Ό ν•  ν•„μš”κ°€ μžˆλ‹€.

 


 

λ°˜μ‘ν˜•