package ex01์์๊ธฐ์ด;
public class Child extends Parent {
// ์์ํด๋์ค, ์๋ธํด๋์ค(์๋ก์ด ํด๋์ค)
// extends : ์์์ ๋ฐ์ ๋ ์ฌ์ฉํ๋ ํค์๋
// --> ์ฐ์ฅํ๋ค, ํ์ฅํ๋ค์ ์๋ฏธ๋ฅผ ๊ฐ์ง๊ณ ์์
// class ์๋ธํด๋์ค extends ์ํผํด๋์ค
public void makeBong() {
System.out.println("๋ง์๋ ๋ด๊ณจ๋ ํ์คํ๋ฅผ ๋ง๋ ๋ค~ ์!");
}
public void makeSteak() {
System.out.println("๋ฒํฐ์ ์์คํ๋ผ๊ฑฐ์ค๋ฅผ ์ถ๊ฐํด์ ์คํ
์ดํฌ๋ฅผ ๊ตฝ๋๋ค");
}
/*
* @author SMHRD(๋ง๋ ์ฌ๋ ์ด๋ฆ)
* @since 23.07.12
* @param ๋งค๊ฐ๋ณ์์ ๋ํ ์ค๋ช
๋ฌ์์ฃผ๋ ๊ณณ
* @return ๋ฐํ๊ฐ์ ๋ํ ์ค๋ช
๋ฌ์์ฃผ๋ ๊ณณ
*/
@Override // annotation --> ๊ฐ๋ฐ์๋ค๋ผ๋ฆฌ ์ํตํ ๋ ์ฌ์ฉํ๋ ์ฃผ์
public void makeAlio() {
// TODO Auto-generated method stub
super.makeAlio();
// super --> Parents ํด๋์ค ํธ์ถ
// . --> ๊ฐ์ง๊ณ ์๋
// makeAliio() --> ๋ฉ์๋๋ฅผ ๊ทธ๋๋ก ํธ์ถํ ๊ฑฐ์ผ
// ๋ฐ๋ก ๋ฐ์ ์๋ ๊ฑฐ์ ๋ฌ๋ฆผ
}
// ๋ฉ์๋ ์ค๋ฒ๋ก๋ฉ == ์ค๋ณต์ ์
// ๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋ฉ == ์ฌ์ ์
// : ์์์ด ์ ์ ๋์์ ๋, ๋ถ๋ชจํด๋์ค๊ฐ ๊ฐ์ง๊ณ ์๋ ๋ฉ์๋๋ฅผ ๊ทธ๋๋ก ๊ฐ์ง๊ณ ์์
// (๋ฆฌํดํ์
, ๋ฉ์๋๋ช
, ๋งค๊ฐ๋ณ์ ๋ฑ) {} ์์ชฝ์ ์๋ ๋ก์ง๋ง ๋ค์ ์ ์ํ๋ ๊ธฐ๋ฒ
// public Child() {
// super(); // --> ๋ถ๋ชจํด๋์ค์ ์์ฑ์ ํธ์ถ
// }
}
package ex01์์๊ธฐ์ด;
import ex02๋ํ
๋๊ฒ์๊ธฐ.GameChip;
public class Main {
// GameChip gc = new GameChip();
// ์ถ์๋ฉ์๋๊ฐ ์์ผ๋ฉด JVM์ ์์ฑ ํ ์คํ์ ์ด๋ค ๋ก์ง์ ์ํํด์ผ ํ๋์ง ๋ชจ๋ฆ, ๊ทธ๋์ ์์ฑ ๋ชปํ๊ฒ ๋ง์
public static void main(String[] args) {
// ์คํํ๋ ๊ณต๊ฐ
Child c = new Child();
c.makeSteak();
c.makeAlio();
// ์์ํด๋์ค๊ฐ ๋ถ๋ชจํด๋์ค์ ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ฉํ ๊ฒฝ์ฐ
// ์ค๋ฒ๋ผ์ด๋ฉํ ๋ฉ์๋๊ฐ ํธ์ถ๋๋ค.
// โ
*(์๋ฐ์์) ์์์ ํน์ง
// 1. ๋ค์ค์์์ ์ง์ํ์ง ์๋๋ค.
// : ํ๋์ ํด๋์ค๋ ํ๋์ ๋ถ๋ชจ ํด๋์ค๋ง ๊ฐ์ง ์ ์๋ค.
// 2. ์์์ ํ์์ ์ ํ์ ๋์ง ์๋๋ค.
// --> ํ๋์ ํด๋์ค๋ ๋ถ๋ชจํด๋์ค๊ฐ ๋ ์๋ ์๊ณ , ์์ํด๋์ค๊ฐ ๋ ์๋ ์๋ค.
// --> ๋ถ๋ชจํด๋์ค๋ ์ฌ๋ฌ๊ฐ์ ์์ํด๋์ค๋ฅผ ๊ฐ์ง ์ ์๋ค.
// 3. ๋ชจ๋ ํด๋์ค๋ java.lang.Object(์ต์์ํด๋์ค)๋ฅผ ์์๋ฐ๋๋ค.
// ๊ฐ์ฒด์ ํ๋ณํ(Casting)
// 1. ๊ธฐ๋ณธ์๋ฃํ์ ํ๋ณํ์ ๋ฐ์ดํฐ์ ํฌ๊ธฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ์๋ vs ๊ฐ์ ํ๋ณํ ๊ฒฐ์
// ---> boolean, int, char, long, double, float, short, byte
// double num = 4; --> ์๋ ํ๋ณํ
// why? double -> 8byte / int -> 4byte
// int num = (int) 3.14; --> ๊ฐ์ ํ๋ณํ
// 2. ๋ ํผ๋ฐ์ค ํ์
์ ์๋ฃํ
// : ๊ฐ์ฒด ๋ด ํ๋, ๋ฉ์๋์ ์ ๊ทผ๊ถํ์ ๊ธฐ์ค์ผ๋ก ๊ฐ์ vs ์๋ ํ๋ณํ ๊ฒฐ์
// ์์์ด ์ ์ ๋์ด์์ ๋, ๊ฐ์ฒด์ ํ๋ณํ ๊ฐ๋ฅ
// (1) ์๋ํ๋ณํ(์
์บ์คํ
)
// : ์์ํด๋์ค๊ฐ ๋ถ๋ชจํด๋์ค ์๋ฃํ์ผ๋ก ์๋์ผ๋ก ํ๋ณํ ํ๋ ๊ฒ์ ์
์บ์คํ
์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
// ex) ๋๋ฌผ --> ๊ณ ์์ด ํด๋์ค๊ฐ ์์
// --> ๊ณ ์์ด๋ ๋๋ฌผ์ด๋ค! (๋ง์ด ๋จ.)
Parent p = new Child() ;
p.makeSteak();
// --> ์
์บ์คํ
๋์์ ๋, ์์ํด๋์ค(์๋ธํด๋์ค, ํ์ํด๋์ค)๊ฐ ๋ถ๋ชจํด๋์ค(์ํผ, ์์)์
// ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ฉ ํ ๊ฒฝ์ฐ์๋, ์์ํด๋์ค์ ๋ฉ์๋๊ฐ ํธ์ถ๋๋ค.
// new child()๋ ์๋ฃํ์ด child๋ ๋ ์ ์๊ณ parent๋,
// object๋ ๋ ์ ์๋ค. (๋คํ์ฑ)
// (2) ๊ฐ์ ํ๋ณํ(๋ค์ด์บ์คํ
)
// : ๋ถ๋ชจํด๋์ค๊ฐ ์์ํด๋์ค ๊ฐ์ ํ๋ณํ
// >> โ
๋ค์ด์บ์คํ
์ ์ ์ ์ ์ >> ์
์บ์คํ
๋ ๊ฐ์ฒด๋ฅผ ๋ค์ ๋ณธ๋ ์์ ์ ํํ๋ก ๊ฐ์ ์ ์ผ๋ก ๋๋๋ฆฌ๋ ๊ฒ
// Child ch = (Child) new Parent();
// ์ฝ๋๋ฅผ ์์ฑํ๋ค๊ฐ ๋นจ๊ฐ์ค์ด ๋ ์ --> (๊ตฌ๋ฌธ ์ค๋ฅ)
// ์ฝ๋์๋ ๋ฌธ์ ๊ฐ ์๋๋ฐ, ์คํํ์ ๋ ๋ฌธ์ ์ํฉ ๋ฐ์ --> Exception(์์ธ์ํฉ)
// ๊ตฌ๋ฌธ์๋ ๋ฌธ์ ๊ฐ ์์ง๋ง, JVM์ด ์ฝ๋๋ฅผ ํด์ํ๋ ์๊ฐ ์์ธ๊ฐ ๋ฐ์
Child ch = (Child)p;
ch.makeBong();
// ๋คํ์ฑ : p๋ผ๋์ parent ์๋๋ฐ child๋ก ๋ฐ๋์์๋ค
}
}
package ex01์์๊ธฐ์ด;
public class Parent {
// ๋ถ๋ชจํด๋์ค, ์ํผํด๋์ค(๊ธฐ์กด ํด๋์ค)
// ์คํ
์ดํฌ ๋ง๋ ๋ค.
public void makeSteak() {
System.out.println("๋ง์๋ ์คํ
์ดํฌ๋ฅผ ๊ตฝ๋๋ค. ์ทจ์ต์ทจ์ต~");
}
// ์๋ฆฌ์ค์ฌ๋ฆฌ์ค ๋ง๋ ๋ค.
public void makeAlio() {
System.out.println("์๋ฆฌ์ค์ฌ๋ฆฌ์ค ํ์คํ ๋ง๋ค๊ธฐ!!!!");
}
}
public static void main(String[] args) {
// ๊ธฐ์กดํด๋์ค์ ๋ณ์ (๋ฐ์ดํฐ)์ ๋ฉ์๋(๋ก์ง,์ฝ๋)๋ฅผ ๋ฌผ๋ ค๋ฐ์ ์๋ก์ด ํด๋์ค๋ฅผ ๊ตฌ์ฑํ๋ ๊ฒ.
// ๊ธฐ์กด ํด๋์ค = ๋ถ๋ชจ ํด๋์ = ์ํผ ํด๋์ค
// ์์ํด๋์ค = ์๋ธํด๋์ค
// ์ฌ์ฌ์ฉ + ์ถ๊ฐ์ฌ์ฉ ๊ฐ๋ฅ
// ๊ธฐ์กด ํด๋์ค์ ๋ณ์์ ์ฝ๋๋ฅผ ์ฌ์ฌ์ฉ
// ๋จผ์ ์์ฑ๋ ๊ฒ์ฆ๋ ํ๋ก๊ทธ๋จ์ ์ฌ์ฌ์ฉ
// ํด๋์ค๊ฐ ๊ณ์ธต์ ๋ถ๋ฅ ๋ฐ ๊ด๋ฆฌ
// ์ ์ง๋ณด์ ์ฉ์ด
// * ์์์ ํน์ง
// - ๋ค์ค ์์์ด ์ง์๋์ง ์๋๋ค.
// - ์์์ ํ์์ ์ ํ์ ๋์ง๋ ์๋๋ค.
// - ๋ชจ๋ ํด๋์ค๋ Object(์ต์์ํด๋์ค) ์์๋ฐ๋๋ค.
// ๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋ฉ
// : ์์์ด ์ ์ ๋์ด ์๋ ์ํ์์, ์์ํด๋์ค(ํ์,์๋ธํด๋์ค)๊ฐ ๋ถ๋ชจํด๋์ค(์ํผ,์์)๊ฐ ๊ฐ์ง๊ณ ์๋ ๋ฉ์๋๋ฅผ ๊ทธ๋๋ก
// ๊ฐ์ง๊ณ ์์ ์ค๊ดํธ{} ์์ชฝ์ ์๋ ๋ก์ง๋ง ์ฌ์ ์ํ๋ ๋ฉ์๋ ์ ์ธ๊ธฐ๋ฒ
// ์ค๋ฒ๋ก๋ฉ ์ค๋ณต์ ์ / ์ค๋ฒ๋ผ์ด๋ฉ ์ฌ์ ์
// ๊ฐ์ฒด ํ๋ณํ --> ์์์ด ์ ์
// 1) ์
์บ์คํ
// : ์์ํด๋์ค๊ฐ ๋ถ๋ชจํด๋์ค๋ก ์๋ ํ๋ณํ(ํ๋์ ๋ฉ์๋ ์ ๊ทผ๊ถํ์ด ๊ธฐ์ค)
// 2) ๋ค์ด์บ์คํ
// : ์
์บ์คํ
๋ ๊ฐ์ฒด๋ฅผ ๋ค์ ๋ณธ๋์ ์๋ฃํ์ผ๋ก ๊ฐ์ ๋ก ๋๋๋ฆฌ๋ ๊ฒ
// * ํ๋ณํ --> ๊ทธ๋ฆผ ๊ทธ๋ฆฌ๋ฉด์ ๊ณต๋ถ *
}