day65 πŸŒ•

μž₯λ―ΈΒ·2022λ…„ 8μ›” 17일
0

였늘의 μ„±κ³Ό

λͺ©λ‘ 보기
65/129

μŠ€ν”„λ§ DB 1편 - 데이터 μ ‘κ·Ό 핡심 원리 μ„Ήμ…˜ 1 μˆ˜κ°•


ν† ν”½ 1개 - μ˜€λ²„λΌμ΄λ”© vs μ˜€λ²„λ‘œλ”©

Overloading

Overload: to put too many things in or on someting.

μ˜€λ²„λ‘œλ“œλŠ” 무언가에 λ„ˆλ¬΄ 많이 λ‹΄λŠ” 것을 λœ»ν•œλ‹€. 이런 μ˜€λ²„λ‘œλ“œμ˜ 뜻처럼, μ˜€λ²„λ‘œλ”©μ΄λž€ 이름은 ν•˜λ‚˜μ˜ λ©”μ„œλ“œ μ΄λ¦„μœΌλ‘œ μ—¬λŸ¬ 가지 κΈ°λŠ₯을 λ‹΄λŠ”λ‹€λŠ” μ˜λ―Έμ—μ„œ λΆ™μ—¬μ‘Œλ‹€.

즉, μžλ°”μ—μ„œ μ˜€λ²„λ‘œλ”©μ€ λ©”μ„œλ“œ 이름은 κ°™μ§€λ§Œ λ§€κ°œλ³€μˆ˜ 개수, 데이터 νƒ€μž…, μˆœμ„œ 쀑 ν•˜λ‚˜λΌλ„ λ‹€λ₯΄λ©΄ μ„œλ‘œ λ‹€λ₯Έ λ©”μ„œλ“œλ‘œ μ·¨κΈ‰ν•˜λŠ” 것을 λ§ν•œλ‹€.

void human() {
	System.out.println("νŒŒλΌλ―Έν„° μ—†μŒ");
}

void human(int a) {
	System.out.println("νŒŒλΌλ―Έν„° 1개");
}

void human(int a, String b) {
	System.out.println("νŒŒλΌλ―Έν„° 2개");
}

void human(int a, String b, int c) {
	System.out.println("νŒŒλΌλ―Έν„° 3개");
}
⬆️ μ˜€λ²„λ‘œλ”© μ½”λ“œ μ˜ˆμ‹œ (νŒŒλΌλ―Έν„°λ§Œ λ‹€λ₯Έ 것을 λ³Ό 수 μžˆλ‹€.)

μ°Έκ³ 
μ˜€λ²„λ‘œλ”© μ‹œ νŒŒλΌλ―Έν„°μ˜ μˆœμ„œκ°€ 달라도 λ˜μ§€λ§Œ, 이것은 쒋지 μ•Šμ€ μ½”λ“œλ‹€.
λ˜ν•œ, 리턴 νƒ€μž…λ§Œ λ‹€λ₯Έ λ©”μ„œλ“œ μ—­μ‹œ μ—λŸ¬λ₯Ό λΆˆλŸ¬μΌμœΌν‚¨λ‹€.

//λ‚˜μœ 예 1. λ¦¬ν„΄νƒ€μž…λ§Œ λ‹€λ₯Έ 경우
void dog(int a) {
	System.out.println("νŒŒλΌλ―Έν„° 1개");
}

int dog(int a) {
	System.out.println("νŒŒλΌλ―Έν„° 1개");
}

//λ‚˜μœ 예 2. νŒŒλΌλ―Έν„°μ˜ μˆœμ„œκ°€ λ‹€λ₯Έ 경우
void cat(int a, long b) {
	System.out.println("νŒŒλΌλ―Έν„° 2개");
}

void cat(long b, int a) {
	System.out.println("νŒŒλΌλ―Έν„° 2개");
}
μ˜€λ²„λ‘œλ”©μ˜ λ‚˜μœ 예 (μ‹€ν–‰ μ‹œ β€˜The method cat(int, long) is ambiguous for type test’ μ—λŸ¬ λ°œμƒ)

Overriding

Override: to ignore or refuse to accept a suggestion, idea, or method that already exists or operates.

μ˜€λ²„λΌμ΄λ“œλŠ” 이전에 μ •μ˜λœ 것을 λ¬΄μ‹œν•œλ‹€λŠ” λœ»μ„ 가지고 μžˆλ‹€.

μžλ°”μ—μ„œ μ˜€λ²„λΌμ΄λ“œλŠ” 상속과 관련이 μžˆλ‹€.
μ˜€λ²„λΌμ΄λ”©μ΄λž€, μžμ‹ ν΄λž˜μŠ€κ°€ λΆ€λͺ¨ ν΄λž˜μŠ€μ—κ²Œμ„œ 상속 받은 λ©”μ„œλ“œλ₯Ό μžμ‹ μ˜ νŠΉμ„±μ— 맞게 μˆ˜μ •(μž¬μ •μ˜)ν•˜λŠ” 것을 λœ»ν•œλ‹€.

//λΆ€λͺ¨ 클래슀
class SuperObject {
	
	//λΆ€λͺ¨ 클래슀의 λ©”μ„œλ“œ
	public void info() {
		System.out.println("μžμ‹μ•„ λ‹ˆκ°€ μž¬μ •μ˜ν•΄λΌ!");
	}
}

//μžμ‹ 클래슀
class SubObject extends SuperObject {
	
	//μžμ‹ 클래슀의 λ©”μ„œλ“œ
	//λΆ€λͺ¨ 클래슀의 λ©”μ„œλ“œλ₯Ό λ¬Όλ €λ°›μ•˜μœΌλ‚˜ κ·Έ μ•ˆμ˜ λ‚΄μš©μ΄ λ‹€λ₯΄λ‹€.
	public void info() {
		System.out.println("μž¬μ •μ˜ μ™„μ„±!");
	}
}
⬆️ μ˜€λ²„λΌμ΄λ”© μ½”λ“œ μ˜ˆμ‹œ (μžμ‹ ν΄λž˜μŠ€κ°€ λΆ€λͺ¨ ν΄λž˜μŠ€μ—κ²Œμ„œ 상속 받은 λ©”μ„œλ“œλ₯Ό μž¬μ •μ˜ν•˜λŠ” 것을 λ³Ό 수 μžˆλ‹€.)

μ°Έκ³ 
μœ„ μ½”λ“œμ—μ„œ μ•„λž˜μ™€ 같이 info()λ₯Ό ν˜ΈμΆœν•  경우 μžμ‹ 클래슀의 λ©”μ„œλ“œκ°€ μ‹€ν–‰λœλ‹€.

public class OverridingExample {
	public static void main(String[] args) {
		SuperClass obj2 = new SubClass();
		obj2.info();
	}
}
이것을 동적 바인딩이라 λΆ€λ₯Έλ‹€. (μž¬μ •μ˜λœ λ©”μ„œλ“œλ₯Ό λ¨Όμ € ν˜ΈμΆœν•œλ‹€.)

참고 자료

  1. μ„œμšΈμ—¬μžλŒ€ν•™κ΅ SWμ€‘μ‹¬λŒ€ν•™μ‚¬μ—…λ‹¨, β€œ[μ½”λ²€μ ΈμŠ€] μžλ°”μ—μ„œ μ˜€λ²„λ‘œλ”©κ³Ό μ˜€λ²„λΌμ΄λ”©μ˜ κ°œλ…κ³Ό 차이점”, https://youtu.be/80lSe7Zv0BM

  2. νŒ€λ“œλͺ¨λ„€, β€œ[5λΆ„ μžλ°”] μ˜€λ²„λΌμ΄λ”©κ³Ό μ˜€λ²„λ‘œλ”©μ˜ 차이λ₯Ό μ•”κΈ°ν•˜λŠ” 방법 #4”, https://youtu.be/utSPt0ybCVQ


νˆ¬λ‘λ¦¬μŠ€νŠΈ μ‹œμž‘

κΉƒ 클둠 뜨기 μ™„λ£Œ!! 두근두근 🀩

profile
김뉴비

0개의 λŒ“κΈ€

κ΄€λ ¨ μ±„μš© 정보