์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Absolute
- AGI
- ai
- AI agents
- AI engineer
- AI researcher
- ajax
- algorithm
- Algorithms
- aliases
- Array ๊ฐ์ฒด
- ASI
- bayes' theorem
- Bit
- Blur
- BOM
- bootstrap
- canva
- challenges
- ChatGPT
- Today
- In Total
A Joyful AI Research Journey๐ณ๐
[36] 230217 Java Ch. 7 ์์: 3. ์ถ์ ํด๋์ค [K-๋์งํธ ํธ๋ ์ด๋ 36์ผ] ๋ณธ๋ฌธ
[36] 230217 Java Ch. 7 ์์: 3. ์ถ์ ํด๋์ค [K-๋์งํธ ํธ๋ ์ด๋ 36์ผ]
yjyuwisely 2023. 2. 17. 12:49230217 Fri 36th class
Ch. 7 ์์
์ง๋: p. 357 ~ (๊ต์ฌ: ํผ์ ๊ณต๋ถํ๋ ์๋ฐ, ์ ์: ์ ์ฉ๊ถ)
ํ๋น๋ฏธ๋์ด_ํผ๊ณต์_์ฉ์ด์ง.pdf
์ฉ์ด ์ฐธ๊ณ
์ค๋ ๋ฐฐ์ด ๊ฒ ์ค ๊ธฐ์ตํ ๊ฒ์ ์ ๋ฆฌํ๋ค.
์ง๋ ์์ ๋ ๋ฐฐ์ด ๊ฒ ์ค ๋ค์ ๊ธฐ์ตํ ๊ฒ
- ์ธ์คํด์ค: ํด๋์ค๋ก๋ถํฐ ๋ง๋ค์ด์ง ๊ฐ์ฒด
- ์์ฑ์ constructor [6์ฅ 221์ชฝ]
: new ์ฐ์ฐ์๋ก ํธ์ถ๋๋ ํน๋ณํ ์ค๊ดํธ ๋ธ๋ก. ๊ฐ์ฒด ์์ฑ ์ ๊ฐ์ฒด๋ฅผ ์ด๊ธฐํํ๋ ์ญํ ์ ํ๋ค. ๋ฉ์๋์ ๋น์ทํ๊ฒ ์๊ฒผ์ง๋ง, ํด๋์ค ์ด๋ฆ์ผ๋ก ๋์ด ์๊ณ ๋ฐํํ์ด ์๋ค. (๊ฐ์ฒด ์ด๊ธฐํ๋ ํ๋๋ฅผ ์ด๊ธฐํํ๊ฑฐ๋, ๋ฉ์๋๋ฅผ ํธ์ถํด์ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ์ค๋น๋ฅผ ํ ๋ ๊ฒ์ ๋งํ๋ค.)
- new๋ ํด๋์ค๋ก๋ถํฐ ๊ฐ์ฒด๋ฅผ ์์ฑ์ํค๋ ์ฐ์ฐ์์ด๋ค.
- ๋ฉ์๋ ์ ์ธ๋ถ method signature [6์ฅ 247์ชฝ]
๋ฆฌํดํ, ๋ฉ์๋ ์ด๋ฆ, ๋งค๊ฐ ๋ณ์ ์ ์ธ์ ํฌํจํ๋ ๊ฒ. ์๋ฌธ๋ช
๊ทธ๋๋ก ๋ฉ์๋ ์๊ทธ๋์ฒ๋ผ๊ณ ๋ ํ๋ค.
- ์ด๋ค ๊ฐ์ฒด์ ์์๋์ด์๋ค๋ ๋ป์ new ํค์๋๋ฅผ ์ด์ฉํ์ฌ ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ์ผ๋ง ํด๋น ๋ณ์๋ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์๋ค๋ ๋ป์
๋๋ค. static ํค์๋๋ฅผ ๋ถ์ด๋ฉด ๊ฐ์ฒด ์์ฑ ์์ด๋ ๋ฉ์๋๋ ๋ณ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฐธ๊ณ : https://jooona.tistory.com/m/164
Ch. 7 ์์
์ฑ ์ ๋ชฉ์ฐจ
07-1 ์์
07-2 ํ์ ๋ณํ๊ณผ ๋คํ์ฑ
07-3 ์ถ์ ํด๋์ค
7.3 ์ถ์ ํด๋์ค
์ถ์(abstract): ์ค์ฒด ๊ฐ์ ๊ณตํต๋๋ ํน์ฑ์ ์ถ์ถํ ๊ฒ์ ๋งํ๋ค.
ex) ์, ๊ณค์ถฉ, ๋ฌผ๊ณ ๊ธฐ = ๋๋ฌผ
์์ ์์๋ ๊ตฌ์ฒด์ ์ธ ์ค์ฒด X, ์ค์ฒด๋ค์ ๊ณตํต๋๋ ํน์ฑ์ ๊ฐ์ง๊ณ ์๋ ์ถ์์ ์ธ ๊ฒ์ด๋ค.
(์ค์ฒด: ํ์ค์ ์กด์ฌํ๋ ๋ฌผ์ฒด)
์ถ์ ํด๋์ค์ ์ค์ฒด ํด๋์ค๋ ์์์ ๊ด๊ณ๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
์ถ์ ํด๋์ค[๋ถ๋ชจ]: ์ ํด๋์ค๋ค์ ๊ณตํต์ ์ธ ํน์ฑ์ ์ถ์ถํด์ ์ ์ธํ ํด๋์ค
ํด๋์ค๋ค์ ๊ณตํต์ ์ธ ํ๋์ ๋ฉ์๋๋ฅผ ์ถ์ถํด์ ์ ์ธํ ํด๋์ค์ด๋ค.
์ค์ฒด ํด๋์ค[์์]: ๊ฐ์ฒด๋ฅผ ์ง์ ์์ฑํ ์ ์๋ ํด๋์ค (์ด๋๊น์ง ๋ฐฐ์ด ๊ฒ!)
์ค์ฒด ํด๋์ค๋ ์ถ์ ํด๋์ค์ ๋ชจ๋ ํน์ฑ์ ๋ฌผ๋ ค๋ฐ๊ณ , ์ถ๊ฐ์ ์ธ ํน์ฑ(ํ๋์ ๋ฉ์๋)์ ๊ฐ์ง ์ ์๋ค.
abstract class ๋๋ฌผ{
void ์ด๋ค();
}
class ์{
void ์ด๋ค(){
System.out.println("์๋ฉ")
}
}
class ๊ฐ์์ง{
void ์ด๋ค(){
System.out.println("๋ฉ๋ฉ")
}
}
class ๊ณ ์์ด{
void ์ด๋ค(){
System.out.println("์ผ์น")
}
}
7.3.1 ์ถ์ ํด๋์ค์ ์ฉ๋ p. 358
1) ๊ณตํต๋ ํ๋์ ๋ฉ์๋์ ์ด๋ฆ์ ํต์ผํ ๋ชฉ์
๊ณต๋์ผ๋ก ์์
ํ์ ๋ ๋ฉ์๋, ๋ฆฌํด ์ด๋ฆ์ด ๋ฌ๋ผ์ง๋ ๊ฒ์ ๋ฐฉ์งํ๋ค.
๊ตฌํ์ ๋ชฉ์ ์ด ์๋๋ค.
ex) Phone์ด๋ผ๋ ์ถ์ ํด๋์ค์ ์์ ์์ธ owner ํ๋์ turnOn() ๋ฉ์๋๋ฅผ ์ ์ธํ๊ณ , Telephone๊ณผ SmartPhone์ Phone์ ์์ํจ์ผ๋ก์จ ํ๋์ ๋ฉ์๋ ์ด๋ฆ์ ํต์ผํ ์ ์๋ค.
2) ์ค์ฒด ํด๋์ค๋ฅผ ์์ฑํ ๋ ์๊ฐ ์ ์ฝ
์ค๊ณ, ๊ตฌํ์ ๋ฐ๋ก ํจ์ผ๋ก์จ ์๊ฐ ์ ์ฝ์ด ๋๋ค. ์
๋ฌด ๋ถ๋ด์ ํ ์ ์๋ค.
๊ฐ๋ฐ ํ๋ก์ ํธ์์ ์ค๊ณ์์ ์ฝ๋(์ฝ๋๋ฅผ ์์ฑํ๋ ์ฌ๋)๋ ๋ค๋ฅธ ์ผ์ ์ํํ๋ค. ์ค๊ณ์๋ ์ฝ๋์๊ฒ ํด๋์ค๋ ์ด๋ค ๊ตฌ์กฐ๋ก ์์ฑํด์ผ ํ๋ค๋ ๊ฒ์ ์๋ ค์ฃผ์ด์ผ ํ๋ค. ์ฝ๋๊ฐ ์ค์๋ก ํ๋์ ๋ฉ์๋ ์ด๋ฆ์ ๋ค๋ฅด๊ฒ ์ฝ๋ฉํ ์ ์๋ค.
์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์ค๊ณ์๋ ๋์ผํ ํ๋์ ๋ฉ์๋๋ฅผ ์ถ๋ ค๋ด์ด ์ถ์ ํด๋์ค๋ก ์ค๊ณ ๊ท๊ฒฉ์ ๋ง๋ค๊ณ , ์ฝ๋์๊ฒ ์ถ์ ํด๋์ค๋ฅผ ์์ํด์ ๊ตฌ์ฒด์ ์ธ ํด๋์ค(์ค์ฒด ํด๋์ค)๋ฅผ ๋ง๋ค๋๋ก ์์ฒญํ๋ค.
ex) ํ์ด์ด ๊ท๊ฒฉ(์ถ์ ํด๋์ค)
ํ๊ตญ ํ์ด์ด, ๊ธํธ ํ์ด์ด(์ค์ฒด ํด๋์ค)
7.3.2 ์ถ์ ํด๋์ค ์ ์ธ
์ถ์ ํด๋์ค๋ฅผ ์ ์ธํ ๋์๋ ํด๋์ค ์ ์ธ์ abstract ํค์๋๋ฅผ ๋ถ์ธ๋ค.
abstract๋ฅผ ๋ถ์ด๋ฉด new ์ฐ์ฐ์๋ฅผ ์ด์ฉํด์ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ง ๋ชปํ๊ณ , ์์์ ํตํด ์์ ํด๋์ค๋ง ๋ง๋ค ์ ์๋ค.
์์ฑ์๋ ์์์ด ์ ๋๋ค.
๊ธฐ๋ณธ ์์ฑ์๋ง super()์ ์ํด ์์์ด ๋๋ค.
์์ 1) ์ถ์ ํด๋์ค
package ch07_3;
public class Phone {
//ํ๋
public String owner;
//์์ฑ์
public Phone(String owner) {
this.owner = owner;
}
//๋ฉ์๋
public void turnOn() {
System.out.println("ํฐ ์ ์์ ์ผญ๋๋ค.");
}
public void turnOff() {
System.out.println("ํฐ ์ ์์ ๋๋๋ค.");
}
}
์์ 2) ์ค์ฒด ํด๋์ค
package ch07_3;
public class SmartPhone extends Phone{
//์์ฑ์
public SmartPhone(String owner) {
super(owner);
}
//๋ฉ์๋
public void internetSearch() {
System.out.println("์ธํฐ๋ท ๊ฒ์์ ํฉ๋๋ค.");
}
}
์์ 3) ์คํ ํด๋์ค
//Phone phone = new Phone();
Phone์ ์์ฑ์๋ฅผ ํธ์ถํด์ ๊ฐ์ฒด๋ฅผ ์์ฑํ ์ ์๋ค๋ ๊ฒ์ ๋ณด์ฌ์ค๋ค.
package ch07_3;
public class PhoneExample {
public static void main(String[] args) {
//Phone phone = new Phone(); ์ถ์ํด๋์ค๋ ์ค๊ณ ๋ชฉ์ ์ด๊ณ ๊ตฌํ ๋ชฉ์ X, new ํค์๋๋ก ๊ฐ์ฒด ์์ฑX
SmartPhone smartPhone = new SmartPhone("ํ๊ธธ๋");
smartPhone.turnOn();
smartPhone.internetSearch();
smartPhone.turnOff();
}
}
7.3.3 ์ถ์ ๋ฉ์๋์ ์ฌ์ ์ p. 362
์ถ์ ํด๋์ค: ์ค์ฒด ํด๋์ค๊ฐ ๊ณตํต์ ์ผ๋ก ๊ฐ์ ธ์ผ ํ ํ๋, ๋ฉ์๋๋ฅผ ์ ์ํด๋์ ์ถ์์ ์ธ ํด๋์ค.
์ค์ฒด ํด๋์ค์ ๋ฉค๋ฒ(ํ๋, ๋ฉ์๋)๋ฅผ ํต์ผํ๋ ๋ชฉ์ ์ด ์๋ค.
๋ชจ๋ ์ค์ฒด๋ค์ด ๊ฐ์ง๊ณ ์๋ ๋ฉ์๋์ ์คํ ๋ด์ฉ์ด ๋์ผํ๋ค๋ฉด ์ถ์ ํด๋์ค์ ๋ฉ์๋๋ฅผ ์์ฑํ๋ ๊ฒ์ด ์ข๋ค.
์ถ์ ๋ฉ์๋๋ abstract ํค์๋์ ํจ๊ป ๋ฉ์๋์ ์ ์ธ๋ถ๋ง ์๊ณ ๋ฉ์๋ ์คํ ๋ด์ฉ์ธ ์ค๊ดํธ {}๊ฐ ์๋ ๋ฉ์๋๋ฅผ ๋งํ๋ค.
[public | protected ] abstract ๋ฆฌํดํ์
๋ฉ์๋์ด๋ฆ(๋งค๊ฐ๋ณ์, ...);
์์)
public abstract void sound();
์ถ์ ํด๋์ค ์ค๊ณ ์ ํ์ ํด๋์ค๊ฐ ๋ฐ๋์ ์คํ ๋ด์ฉ์ ์ฑ์ฐ๋๋ก ๊ฐ์ ํ๊ณ ์ถ์ ๋ฉ์๋๊ฐ ์์ ๊ฒฝ์ฐ ํด๋น ๋ฉ์๋๋ฅผ ์ถ์ ๋ฉ์๋๋ก ์ ์ธํ๋ค.
์์ ํด๋์ค๋ ๋ฐ๋์ ์ถ์ ๋ฉ์๋๋ฅผ ์ฌ์ ์ํด์ ์คํ ๋ด์ฉ์ ์์ฑํด์ผ ํ๋ค. (๊ทธ๋ ์ง ์์ผ๋ฉด ์ปดํ์ผ ์๋ฌ ๋ฐ์)
์ถ์ ๋ฉ์๋: ์ถ์ ํด๋์ค์์๋ง ์ ์ธํ ์ ์๊ณ , ๋ฉ์๋์ ์ ์ธ๋ถ๋ง ์๋ ๋ฉ์๋๋ฅผ ๋งํ๋ค.
์ถ์ ๋ฉ์๋๋ ์์ ํด๋์ค์์ ์ฌ์ ์๋์ด ์คํ ๋ด์ฉ์ ๊ฒฐ์ ํด์ผ ํ๋ค.
ํ์ ํด๋์ค๊ฐ ๋ฐ๋์ ์ค๋ฒ๋ผ์ด๋ฉํ๋๋ก ํ๊ณ ์ถ์ ๊ฒฝ์ฐ ์ฌ์ฉํ๋ ๋ฉ์๋.
๋ฉ์๋์ ์ ์ธ๋ถ๋ง ์๊ณ ๋ฉ์๋ ์คํ ๋ด์ฉ์ธ ์ค๊ดํธ๊ฐ ์๋ค. ์ถ์ ๋ฉ์๋๋ ์ถ์ ํด๋์ค ์์์๋ง ์ ์ธ ๊ฐ๋ฅํ๋ค.
์ถ์ ๋ฉ์๋(abstract method)๋ ์์ ํด๋์ค์์ ๋ฐ๋์ ์ค๋ฒ๋ผ์ด๋ฉํด์ผ๋ง ์ฌ์ฉํ ์ ์๋ ๋ฉ์๋๋ฅผ ์๋ฏธํฉ๋๋ค.
์๋ฐ์์ ์ถ์ ๋ฉ์๋๋ฅผ ์ ์ธํ์ฌ ์ฌ์ฉํ๋ ๋ชฉ์ ์ ์ถ์ ๋ฉ์๋๊ฐ ํฌํจ๋ ํด๋์ค๋ฅผ ์์๋ฐ๋ ์์ ํด๋์ค๊ฐ ๋ฐ๋์ ์ถ์ ๋ฉ์๋๋ฅผ ๊ตฌํํ๋๋ก ํ๊ธฐ ์ํจ์ ๋๋ค.
์๋ฅผ ๋ค๋ฉด ๋ชจ๋์ฒ๋ผ ์ค๋ณต๋๋ ๋ถ๋ถ์ด๋ ๊ณตํต์ ์ธ ๋ถ๋ถ์ ๋ฏธ๋ฆฌ ๋ค ๋ง๋ค์ด์ง ๊ฒ์ ์ฌ์ฉํ๊ณ , ์ด๋ฅผ ๋ฐ์ ์ฌ์ฉํ๋ ์ชฝ์์๋ ์์ ์๊ฒ ํ์ํ ๋ถ๋ถ๋ง์ ์ฌ์ ์ํ์ฌ ์ฌ์ฉํจ์ผ๋ก์จ ์์ฐ์ฑ์ด ํฅ์๋๊ณ ๋ฐฐํฌ ๋ฑ์ด ์ฌ์์ง๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ด๋ฌํ ์ถ์ ๋ฉ์๋๋ ์ ์ธ๋ถ๋ง์ด ์กด์ฌํ๋ฉฐ, ๊ตฌํ๋ถ๋ ์์ฑ๋์ด ์์ง ์์ต๋๋ค.
๋ฐ๋ก ์ด ์์ฑ๋์ด ์์ง ์์ ๊ตฌํ๋ถ๋ฅผ ์์ ํด๋์ค์์ ์ค๋ฒ๋ผ์ด๋ฉํ์ฌ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค.
์๋ฐ์์ ์ถ์ ๋ฉ์๋๋ ๋ค์๊ณผ ๊ฐ์ ๋ฌธ๋ฒ์ผ๋ก ์ ์ธํฉ๋๋ค.
abstract ๋ฐํํ์ ๋ฉ์๋์ด๋ฆ();
์์ ๊ฐ์ด ์ ์ธ๋ถ๋ง ์๊ณ ๊ตฌํ๋ถ๊ฐ ์๋ค๋ ์๋ฏธ๋ก ์ ์ธ๋ถ ๋์ ๋ฐ๋ก ์ธ๋ฏธ์ฝ๋ก (;)์ ์ถ๊ฐํฉ๋๋ค.
์์ 1) ์ถ์ ๋ฉ์๋ ์ ์ธ Animal.java
package ch07_3;
//[1]
public abstract class Animal {
//ํ๋
//๋๋ฌผ์ ์ข
๋ฅ(ํฌ์ ๋ฅ, ๊ณค์ถฉ)
String kind;
//์์ฑ์
//๋ฉ์๋
//๋ชจ๋ (๊ณค์ถฉ) ๋๋ฌผ์ ์จ์ ์ฝ๋๋ค. (๋ชจ๋ ๋๋ฌผ์ด ๋๊ฐ์ด ์จ์ ์ฐ๋ค.)
public void breath() {
System.out.println("์จ์ ์ฝ๋๋ค.");
}
//๋ชจ๋ ๋๋ฌผ์ ์๋ฆฌ๋ฅผ ๋
๋๋ค.(๋๋ฌผ๋ง๋ค ๊ฐ๊ฐ ๊ณ ์ ํ ๋ค๋ฅธ ์๋ฆฌ๋ฅผ ๋ธ๋ค.)
public abstract void sound();
}
์์ 2) ์ถ์ ๋ฉ์๋ ์ฌ์ ์ Dog.java
์ถ์ ํด๋์ค์ธ Animal์ ์์ํ๊ณ , ์ถ์ ๋ฉ์๋์ธ sound()๋ฅผ ์ฌ์ ์ํ๋ค.
package ch07_3;
//[2]
public class Dog extends Animal {
public Dog() {
//super() (์๋ต๋จ) : ๋ถ๋ชจ ํด๋์ค์ ๊ธฐ๋ณธ ํด๋์ค๋ ์์ ๋ฐ๋๋ค.
this.kind = "ํฌ์ ๋ฅ";
}
@Override
//์ค๋ฒ๋ผ์ด๋ฉ
public void sound() {
System.out.println("๋ฉ๋ฉ");
}
}
์์ 3) ์ถ์ ๋ฉ์๋ ์ฌ์ ์ Cat.java
์ถ์ ํด๋์ค์ธ Animal์ ์์ํ๊ณ , ์ถ์ ๋ฉ์๋์ธ sound()๋ฅผ ์ฌ์ ์ํ๋ค.
package ch07_3;
//[3]
public class Cat extends Animal {
public Cat() {
this.kind = "ํฌ์ ๋ฅ";
}
@Override
//์ค๋ฒ๋ผ์ด๋ฉ
public void sound() {
System.out.println("์ผ์น");
}
}
์์ 4) ์คํ ํด๋์ค AnimalExample.java
Dog์ Cat ๊ฐ์ฒด๋ฅผ ์์ฑํด์ sound() ๋ฉ์๋๋ฅผ ํธ์ถํ๋ค.
package ch07_3;
//[4]
public class AnimalExample {
public static void main(String[] args) {
//Animal animal = new Animal(); ์ถ์ ํด๋์ค์ด๋ฏ๋ก new๋ฅผ ํตํด ๊ฐ์ฒด ์์ฑX
Dog dog = new Dog();
Cat cat = new Cat();
dog.sound();
cat.sound();
System.out.println("----");
//๋ณ์์ ์๋ ํ์
๋ณํ
//int a = 10;
Animal animal = null; //์ฐธ์กฐํ์
: ์ฃผ์๋ฅผ ์ ์ฅ, ๊ธฐ๋ณธ๊ฐ:null
//๋ถ๋ชจ ํด๋์ค (๋) = ์์ ํด๋์ค (์) "์๋ํ์
๋ณํ"
animal = new Dog();
animal.breath();
animal.sound();
//๋ถ๋ชจ ํด๋์ค (๋) = ์์ ํด๋์ค (์) "์๋ํ์
๋ณํ"
animal = new Cat();
animal.breath();
animal.sound();
System.out.println("----");
//๋ฉ์๋์ ๋งค๊ฐ๋ณ์ ๋คํ์ฑ
animalSound(new Dog()); //animalSound: 2. ํธ์ถ
animalSound(new Cat());
}
//์ ๋ฉ์๋ ์ ์ธ Animal animal = new Dog()
private static void animalSound(Animal animal) {//animalSound: 1. ์ ์ธ
//static: new ํค์๋ ํ์X
//ํด๋์ค์ด๋ฆ.๋ฉ์๋์ด๋ฆ์ผ๋ก ํธ์ถ
animal.sound();
}
}
์ด๋ ๊ฒ๋ ๊ฐ๋ฅํ๋ค.
package ch07_3;
//[4]
public class AnimalExample {
public static void main(String[] args) {
//Animal animal = new Animal(); ์ถ์ ํด๋์ค์ด๋ฏ๋ก new๋ฅผ ํตํด ๊ฐ์ฒด ์์ฑX
Dog dog = new Dog();
Cat cat = new Cat();
dog.sound();
cat.sound();
System.out.println("----");
//๋ณ์์ ์๋ ํ์
๋ณํ
//int a = 10;
Animal b = null; //์ฐธ์กฐํ์
: ์ฃผ์๋ฅผ ์ ์ฅ, ๊ธฐ๋ณธ๊ฐ:null
//๋ถ๋ชจ ํด๋์ค (๋) = ์์ ํด๋์ค (์) "์๋ํ์
๋ณํ"
b = new Dog();
b.breath();
b.sound();
//๋ถ๋ชจ ํด๋์ค (๋) = ์์ ํด๋์ค (์) "์๋ํ์
๋ณํ"
b = new Cat();
b.breath();
b.sound();
System.out.println("----");
//๋ฉ์๋์ ๋งค๊ฐ๋ณ์ ๋คํ์ฑ
animalSound(new Dog()); //animalSound: 2. ํธ์ถ
animalSound(new Cat());
}
//์ ๋ฉ์๋ ์ ์ธ Animal animal = new Dog()
private static void animalSound(Animal c) {//animalSound: 1. ์ ์ธ
//static: new ํค์๋ ํ์X
//ํด๋์ค์ด๋ฆ.๋ฉ์๋์ด๋ฆ์ผ๋ก ํธ์ถ
c.sound();
}
}
๊ฒฐ๊ณผ)
๋ฉ๋ฉ
์ผ์น
----
์จ์ ์ฝ๋๋ค.
๋ฉ๋ฉ
์จ์ ์ฝ๋๋ค.
์ผ์น
----
๋ฉ๋ฉ
์ผ์น
๋ง๋ฌด๋ฆฌ
2๊ฐ์ง ํค์๋๋ก ๋๋ด๋ ํต์ฌ ํฌ์ธํธ
1) ์ถ์ ํด๋์ค (abstract class): ํด๋์ค๋ค์ ๊ณตํต์ ์ธ ํ๋์ ๋ฉ์๋๋ฅผ ์ถ์ถํด์ ์ ์ธํ ํด๋์ค์ด๋ค.
[7์ฅ 357์ชฝ]
์ค์ฒด ํด๋์ค๊ฐ ๊ณตํต์ ์ผ๋ก ๊ฐ์ ธ์ผ ํ ํ๋์ ๋ฉ์๋๋ค์ ์ ์ํด ๋์ ์ถ์์ ์ธ ํด๋์ค.
์ถ์ ํด๋์ค๋ ์ค์ฒด ํด๋์ค์ ๊ณตํต๋๋ ํ๋์ ๋ฉ์๋๋ฅผ ์ถ์ถํด์ ๋ง๋ค์๊ธฐ ๋๋ฌธ์ ๊ฐ์ฒด๋ฅผ ์ง์ ์์ฑํด์ ์ฌ์ฉํ ์ ์๋ค.
2) ์ถ์ ๋ฉ์๋ (abstract method): ์ถ์ ํด๋์ค์์๋ง ์ ์ธํ ์ ์๊ณ , ๋ฉ์๋์ ์ ์ธ๋ถ๋ง ์๋ ๋ฉ์๋๋ฅผ ๋งํ๋ค.
์ถ์ ๋ฉ์๋๋ ์์ ํด๋์ค์์ ์ฌ์ ์๋์ด ์คํ ๋ด์ฉ์ ๊ฒฐ์ ํด์ผ ํ๋ค.
์ฐธ๊ณ ์ฉ์ด: ์ค๋ฒ๋ผ์ด๋ฉ [7์ฅ 362์ชฝ]
ํ์ ํด๋์ค๊ฐ ๋ฐ๋์ ์ค๋ฒ๋ผ์ด๋ฉํ๋๋ก ํ๊ณ ์ถ์ ๊ฒฝ์ฐ ์ฌ์ฉํ๋ ๋ฉ์๋.
๋ฉ์๋์ ์ ์ธ๋ถ๋ง ์๊ณ ๋ฉ์๋ ์คํ ๋ด์ฉ์ธ ์ค๊ดํธ๊ฐ ์๋ค. ์ถ์ ๋ฉ์๋๋ ์ถ์ ํด๋์ค ์์์๋ง ์ ์ธ ๊ฐ๋ฅํ๋ค.
public abstract class A{
//์ถ์ ๋ฉ์๋
public abstract void add();
}
public class B extends A{
//์ถ์ ๋ฉ์๋ ๊ตฌํ
public void add(){
}
Q3)
์ฝ๋ 1)
public abstract class HttpServlet {
//์ถ์ ๋ฉ์๋
public abstract void service(); //service ์ถ์ ๋ฉ์๋
}
์ฝ๋ 2)
public class LoginServlet extends HttpServlet{
//service ์ถ์๋ฉ์๋ ๊ตฌํ
public void service() {
System.out.println("๋ก๊ทธ์ธ ํฉ๋๋ค.");
}
}
์ฝ๋ 3)
public class FileDownloadServlet extends HttpServlet {
//service ์ถ์๋ฉ์๋ ๊ตฌํ
public void service() {
System.out.println("ํ์ผ ๋ค์ด๋ก๋ ํฉ๋๋ค.");
}
}
์ฝ๋ 4)
public class HttpServletExample {
public static void main(String[] args) {
method(new LoginServlet());//๋ก๊ทธ์ธํฉ๋๋ค.
method(new FileDownloadServlet()); //ํ์ผ ๋ค์ด๋ก๋์
๋๋ค.
}//main ๋
public static void method(HttpServlet servlet) {
servlet.service();
}
}
๊ธฐํ)
HTML: ๊ฒ์ํ ๊ธ์ฐ๊ธฐ ํ๋ฉด
Java:
//BoardService์์ ์ค๊ณ๋์ด์ง wirte
public void write(BoardVO board){
bm.write(board);
(์๋ต)
}
XML: BoardMapper.xml
์ฑ: ์๋ฐ์ ์์ ์ฐ์,
์น ๊ฐ๋ฐ์๋ ์์ ์ ์ฐ์