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

ν”„λ‘œκ·Έλž˜λ° 곡뢀/Java

[16일차] 좔상 클래슀(abstract class), 상속, μ—΄κ±°ν˜•(enumeration)

Ex66 ~ Ex71

 

μΆ”μƒν΄λž˜μŠ€(abstract class)
- κ΅¬ν˜„ 멀버λ₯Ό κ°€μ§ˆ 수 μžˆλ‹€.(=일반 클래슀의 μ„±μ§ˆ)
- 좔상 멀버λ₯Ό κ°€μ§ˆ 수 μžˆλ‹€.(=μΈν„°νŽ˜μ΄μŠ€μ˜ μ„±μ§ˆ)

- μΈμŠ€ν„΄μŠ€λ₯Ό 생성할 수 μ—†λ‹€.

- μΆ”μƒλ©”μ„œλ“œλ₯Ό ν¬ν•¨ν•˜κ³  μžˆμ§€ μ•Šμ•„λ„ abstract ν‚€μ›Œλ“œλ₯Ό λΆ™μ—¬ μΆ”μƒν΄λž˜μŠ€λ‘œ μ§€μ • κ°€λŠ₯. (μ΄λ•Œμ—λ„ μΈμŠ€ν„΄μŠ€ 생성 λΆˆκ°€λŠ₯)

 

ν‚€μ›Œλ“œ abstractλ₯Ό λΆ™μ΄κΈ°λ§Œ ν•˜λ©΄ λœλ‹€. 

abstract class ν΄λž˜μŠ€μ΄λ¦„ {
	...
}

 

μΆ”μƒλ©”μ†Œλ“œ(abstract method)

μ„ μ–ΈλΆ€λ§Œ μž‘μ„±ν•˜κ³  κ΅¬ν˜„λΆ€λŠ” μž‘μ„±ν•˜μ§€ μ•Šμ€ μ±„λ‘œ 남겨둔 λ―Έμ™„μ„± λ©”μ„œλ“œ

 

- μΆ”μƒν΄λž˜μŠ€λ‘œλΆ€ν„° μƒμ†λ°›λŠ” μžμ†ν΄λž˜μŠ€λŠ” μ˜€λ²„λΌμ΄λ”©μ„ 톡해 쑰상인 μΆ”μƒν΄λž˜μŠ€μ˜ μΆ”μƒλ©”μ„œλ“œλ₯Ό λͺ¨λ‘ κ΅¬ν˜„ν•΄μ£Όμ–΄μ•Ό ν•œλ‹€. μΆ”μƒλ©”μ„œλ“œ 쀑 ν•˜λ‚˜λΌλ„ κ΅¬ν˜„ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄, μžμ†ν΄λž˜μŠ€ μ—­μ‹œ μΆ”μƒν΄λž˜μŠ€λ‘œ μ§€μ •ν•΄μ£Όμ–΄μ•Ό ν•œλ‹€.

abstract class Player { //μΆ”μƒν΄λž˜μŠ€
	abstract void play(int pos); //μΆ”μƒλ©”μ„œλ“œ
    abstract void stop(); //μΆ”μƒλ©”μ„œλ“œ
}

class AudioPlayer extends Player {
	void play(int post) { /* λ‚΄μš© μƒλž΅ */ } //μΆ”μƒλ©”μ„œλ“œλ₯Ό κ΅¬ν˜„
    void stop() { /* λ‚΄μš© μƒλž΅ */ } //μΆ”μƒλ©”μ„œλ“œλ₯Ό κ΅¬ν˜„
}

abstract class AbstractPlayer extends Player {
	void play(int post) { /* λ‚΄μš© μƒλž΅ */ } //μΆ”μƒλ©”μ„œλ“œλ₯Ό κ΅¬ν˜„
}

 


상속

1. ν΄λž˜μŠ€
2. μΈν„°νŽ˜μ΄μŠ€
3. μΆ”상 ν΄λž˜μŠ€

(λΆ€λͺ¨)  <-  (μžμ‹)
클래슀   클래슀 : O
μΈν„°νŽ˜μ΄μŠ€ 클래슀 : O(μƒμ†λœ μΆ”μƒν΄λž˜μŠ€λ₯Ό μžμ‹μ΄ κ΅¬ν˜„ν•΄μ•Ό ν•œλ‹€.)
μΆ”μƒν΄λž˜μŠ€ 클래슀 : O(κ΅¬ν˜„λ©€λ²„λŠ” κ·ΈλŒ€λ‘œ μƒμ†λ°›κ³ , μΆ”μƒλ©€λ²„λŠ” κ΅¬ν˜„ν•΄μ•Όν•œλ‹€.)
μΈν„°νŽ˜μ΄μŠ€ μΈν„°νŽ˜μ΄μŠ€ : O
μΆ”μƒν΄λž˜μŠ€  μΆ”μƒν΄λž˜μŠ€ : O(상속받은 μΆ”상 λ©”μ†Œλ“œλ₯Ό κ΅¬ν˜„ν• μ§€/μ•ˆν• μ§€ μ„ νƒ)

μΈν„°νŽ˜μ΄μŠ€ μΆ”μƒν΄λž˜μŠ€ : O
μΆ”μƒν΄λž˜μŠ€  μΈν„°νŽ˜μ΄μŠ€ : X(λΆ€λͺ¨μ˜ κ΅¬ν˜„λœ λ©€λ²„λ₯Ό μƒμ†λ°›μ„ μˆ˜ μ—†μ–΄μ„œ..)
클래슀 μΈν„°νŽ˜μ΄μŠ€ : X(λΆ€λͺ¨μ˜ κ΅¬ν˜„λœ λ©€λ²„λ₯Ό μƒμ†λ°›μ„ μˆ˜ μ—†μ–΄μ„œ..)
클래슀 μΆ”μƒν΄λž˜μŠ€ : X

- μΌλ°˜ ν΄λž˜μŠ€λŠ” μΌλ°˜ ν΄λž˜μŠ€μ˜ λΆ€λͺ¨ μ—­ν• λ§Œ κ°€λŠ₯ν•˜λ‹€.
- μΌλ°˜ ν΄λž˜μŠ€μ˜ μΈν„°νŽ˜μ΄μŠ€λ‚˜ μΆ”μƒν¬λž˜μŠ€μ˜ λΆ€λͺ¨ μ—­ν• μ΄ λΆˆκ°€λŠ₯ν•˜λ‹€.

- μΆ”상 ν΄λž˜μŠ€λŠ” μΆ”상 ν΄λž˜μŠ€, μΌλ°˜ ν΄λž˜μŠ€μ˜ λΆ€λͺ¨ μ—­ν• μ„ ν•œλ‹€.
- μΆ”상 ν΄λž˜μŠ€λŠ” μΈν„°νŽ˜μ΄μŠ€ λΆ€λͺ¨ μ—­ν• μ΄ λΆˆκ°€λŠ₯ν•˜λ‹€.

- μΈν„°νŽ˜μ΄μŠ€λŠ” μΈν„°νŽ˜μ΄μŠ€, μΆ”μƒν΄λž˜μŠ€, μΌλ°˜ ν΄λž˜μŠ€μ˜ λΆ€λͺ¨ μ—­ν• μ„ ν•œλ‹€.

- μΈν„°νŽ˜μ΄μŠ€ <- μΈν„°νŽ˜μ΄μŠ€ <- μΆ”상 ν΄λž˜μŠ€ <- μΆ”상 ν΄λž˜μŠ€ <- μΌλ°˜ ν΄λž˜μŠ€

 


μ—΄κ±°ν˜•, Enumeration

- μ—¬λŸ¬κ°œ κ°’을 κ°€μ§€κ³  μžˆλŠ” μžλ£Œν˜• > κ°κ΄€μ‹(μ„ νƒν˜•)

 

μš”κ΅¬μ‚¬ν•­] μ˜λ₯˜ μ‡Όν•‘λͺ° > ν‹°μ…”μΈ  > κ³ κ° λ°©λ¬Έ > μƒ‰μƒ μ„ νƒ(λΉ¨κ°•, λ…Έλž‘, νŒŒλž‘)

 

		Colour input2 = Colour.RED;
		
		if (input2 == Colour.RED || input2 == Colour.YELLOW || input2 == Colour.BLUE) {
			System.out.println("판맀 κ°€λŠ₯");
		} else {
			System.out.println("재고 μ—†μŒ");
		}
		
		String gender = "λ‚¨μž";
		String gender2 = "f";
		
		Gender gender3 = Gender.MALE;
		
		System.out.println(gender3);
		
		
	}//main

}


class Color {
	public final static int RED = 0;
	public final static int YELLOW = 1;
	public final static int BLUE = 2;
}



enum Colour {
	RED, 		//final static μƒμˆ˜(μ •μˆ˜), μˆœμ„œλŒ€λ‘œ 012,,, μœ„λž‘ λ˜‘κ°™μŒ
	YELLOW,
	BLUE
}


enum Gender {
	MALE,
	FEMALE
}