π λ€νμ±
: κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°μ 3λ νΉμ§ μ€ νλλ‘ 'μ¬λ¬κ°μ ννλ₯Ό κ°λλ€'λ μλ―Έμ΄λ€.
: νλμ νλμΌλ‘ μ¬λ¬κ°μ§ μΌμ μννλ κ°λ
: μμμ μ΄μ©ν κΈ°μ λ‘ λΆλͺ¨ νμ μΌλ‘λΆν° νμλ μ¬λ¬κ°μ§ νμ μ μμ κ°μ²΄λ₯Ό λΆλͺ¨ ν΄λμ€ νμ νλλ‘ λ€λ£° μ μλ κΈ°μ
π ν΄λμ€ νλ³ν
π§Έ μ μΊμ€ν (Up Casting)
: μμ κ΄κ³μ μλ λΆλͺ¨, μμ ν΄λμ€ κ°μ λΆλͺ¨νμ μ°Έμ‘°ν λ³μκ° λͺ¨λ μμ νμ μ κ°μ²΄ μ£Όμλ₯Ό λ°μ μ μλ€
π» μμ
//Sonata ν΄λμ€λ Car ν΄λμ€μ νμ
Car c = new Sonata();
//Sonata ν΄λμ€νμμ Car ν΄λμ€νμΌλ‘ λ°λ
π§Έ λ€μ΄ μΊμ€ν (Down Casting)
: μμ κ°μ²΄μ μ£Όμλ₯Ό λ°μ λΆλͺ¨ μ°Έμ‘°ν λ³μλ₯Ό κ°μ§κ³ μμμ λ©€λ²λ₯Ό μ°Έμ‘°ν΄μΌ ν κ²½μ°, λΆλͺ¨ ν΄λμ€ νμ μ μ°Έμ‘°ν λ³μλ₯Ό μμ ν΄λμ€ νμ μΌλ‘ νλ³ννλ κ²μ΄λ€.
: μλμΌλ‘ μ²λ¦¬λμ§ μκΈ° λλ¬Έμ λ°λμ νμ νμ λͺ μν΄μ νλ³ν
π» μμ
//Sonata ν΄λμ€λ Car ν΄λμ€μ νμ
Car c = new Sonata();
((Sonata)c).moveSonata();
π‘ ν΄λμ€ κ°μ ν λ³νμ λ°λμ μμ κ΄κ³μ μλ ν΄λμ€λΌλ¦¬λ§ κ°λ₯νλ€.
π instanceof μ°μ°μ
: νμ¬ μ°Έμ‘°ν λ³μκ° μ΄λ€ ν΄λμ€ νμ κ°μ²΄ μ£Όμλ₯Ό μ°Έμ‘°νκ³ μλμ§ νμΈν λ μ¬μ©νλ€.
: ν΄λμ€ νμ μ΄ λ§μΌλ©΄ true, λ§μ§ μμΌλ©΄ false λ°ν
π κ°μ²΄λ°°μ΄κ³Ό λ€νμ±
: λ€νμ±μ μ΄μ©νμ¬ μμ κ΄κ³μ μλ νλμ λΆλͺ¨ ν΄λμ€ νμ μ λ°°μ΄ κ³΅κ°μ μ¬λ¬ μ’ λ₯μ μμ ν΄λμ€ κ°μ²΄ μ μ₯ κ°λ₯
π λ§€κ°λ³μμ λ€νμ±
: λ€νμ±μ μ΄μ©νμ¬ λ©μλ νΈμΆ μ λΆλͺ¨νμ μ λ³μ νλλ§ μ¬μ©ν΄ μμ νμ μ κ°μ²΄λ₯Ό λ°μ μ μμ
π λ°μΈλ©
: μ€μ μ€νν λ©μλ μ½λμ νΈμΆνλ μ½λλ₯Ό μ°κ²°μν€λ κ²
: νλ‘κ·Έλ¨μ΄ μ€νλκΈ° μ μ μ»΄νμΌμ΄ λλ©΄μ λͺ¨λ λ©μλλ μ μ λ°μΈλ© λ¨
π§Έ λμ λ°μΈλ©
: μ»΄νμΌ μ μ μ λ°μΈλ© λ λ©μλλ₯Ό μ€νν λΉμμ κ°μ²΄ νμ μ κΈ°μ€μΌλ‘ λ°μΈλ© λλ κ²
π§Έ λμ λ°μΈλ© μ±λ¦½ μ건
: μμ κ΄κ³λ‘ μ΄λ£¨μ΄μ Έ λ€νμ±μ΄ μ μ©λ κ²½μ°, λ©μλ μ€λ²λΌμ΄λ©μ΄ λμ΄ μμΌλ©΄ μ μ μΌλ‘ λ°μΈλ© λ λ©μλ μ½λλ³΄λ€ μ€λ²λΌμ΄λ© λ λ©μλ μ½λλ₯Ό μ°μ μ μΌλ‘ μννλ€.
π« μ€μ΅
package com.kh.p3.poly.model.vo;
public class Hobby {
private int spendTime; //ν¬μμκ°(λ
)
private int spendMoney; //ν¬μκΈμ‘(λ§μ)
public Hobby() {
}
public Hobby(int spendTime, int spendMoney) {
this.spendTime = spendTime;
this.spendMoney = spendMoney;
}
@Override
public String toString() {
return "μ΄ μ·¨λ―Έλ₯Ό μν΄ ν¬μν μκ°μ " + spendTime + "λ
, ν¬μν κΈμ‘μ " + spendMoney + "λ§μμ΄λ€.";
}
public void print() {
System.out.println("μ΄ μ·¨λ―Έλ₯Ό μν΄ ν¬μν μκ°μ " + spendTime + "λ
, ν¬μν κΈμ‘μ " + spendMoney + "λ§μμ΄λ€.");
}
}
package com.kh.p3.poly.model.vo;
public class Collecting extends Hobby{
private String stuff;//μμ§λ¬Όν
public Collecting() {
}
public Collecting(String stuff) {
this.stuff = stuff;
}
public Collecting(int spendTime, int spendMoney, String stuff) {
super(spendTime, spendMoney);
this.stuff = stuff;
}
public void colMethod() {
System.out.println(super.toString() + "λ΄κ° μ·¨λ―Έλ‘ λͺ¨μΌλ λ¬Όνμ " + stuff + "μ΄λ€.");
}
@Override
public void print() {
System.out.println(super.toString() + "λ΄κ° μ·¨λ―Έλ‘ λͺ¨μΌλ λ¬Όνμ " + stuff + "μ΄λ€.");
}
}
package com.kh.p3.poly.model.vo;
public class ReadingBook extends Hobby{
private int bookNo;//μ½μ μ±
μ μ(κΆ)
public ReadingBook() {
}
public ReadingBook(int spendTime, int spendMoney, int bookNo) {
super(spendTime, spendMoney);
this.bookNo = bookNo;
}
public ReadingBook(int bookNo) {
super();
this.bookNo = bookNo;
}
public int getBookNo() {
return bookNo;
}
public void setBookNo(int bookNo) {
this.bookNo = bookNo;
}
public void reMethod() {
System.out.println(super.toString() + "λ΄κ° νλ¬μ μ½λ μ±
μ " + bookNo + "(κΆ)μ΄λ€.");
}
@Override
public void print() {
System.out.println(super.toString() + "λ΄κ° νλ¬μ μ½λ μ±
μ " + bookNo + "(κΆ)μ΄λ€.");
}
}
package com.kh.p3.poly.run;
import com.kh.p3.poly.model.vo.Collecting;
import com.kh.p3.poly.model.vo.Hobby;
import com.kh.p3.poly.model.vo.ReadingBook;
public class Run {
public static void main(String[] args) {
Hobby h = new Hobby();
Hobby upH = new Collecting();//μ
μΊμ€ν
//ReadingBook downRb = (ReadingBook)(upH);//λ€μ΄μΊμ€ν
//λ€νμ± μ μ©
Hobby polyH = new Collecting();
Hobby polyH1 = new Collecting(3, 100, "μ°ν");
Hobby polyRb1 = new ReadingBook(4, 200, 100);
Hobby polyRb2 = new ReadingBook(5, 300, 200);
Hobby polyH2 = new Collecting(6, 400, "λμκΈ°");
//λ€νμ± + λ°°μ΄ μ μ©
Hobby[] polyArr = new Hobby[4];
polyArr[0] = new Collecting(3, 100, "μ°ν");
polyArr[1] = new ReadingBook(4, 200, 100);
polyArr[2] = new ReadingBook(5, 300, 200);
polyArr[3] = new Collecting(6, 400, "λμκΈ°");
// ((Collecting)polyArr[0]).colMethod();
// ((ReadingBook)polyArr[1]).reMethod();
// ((ReadingBook)polyArr[2]).reMethod();
// ((Collecting)polyArr[3]).colMethod();
//
// //forλ¬Έ μ¬μ©(instanceOf + ifλ¬Έ μ¬μ©)
// for(int i=0; i<polyArr.length; i++) {
// if(polyArr[i] instanceof Collecting) {
// ((Collecting)polyArr[i]).colMethod();
// }else {
// ((ReadingBook)polyArr[i]).reMethod();
// }
// }
//λμ λ°μΈλ© μ μ©
for(int i=0; i<polyArr.length; i++) {
polyArr[i].print();
}
}
}
/*
μ΄ μ·¨λ―Έλ₯Ό μν΄ ν¬μν μκ°μ 3λ
, ν¬μν κΈμ‘μ 100λ§μμ΄λ€.λ΄κ° μ·¨λ―Έλ‘ λͺ¨μΌλ λ¬Όνμ μ°νμ΄λ€.
μ΄ μ·¨λ―Έλ₯Ό μν΄ ν¬μν μκ°μ 4λ
, ν¬μν κΈμ‘μ 200λ§μμ΄λ€.λ΄κ° νλ¬μ μ½λ μ±
μ 100(κΆ)μ΄λ€.
μ΄ μ·¨λ―Έλ₯Ό μν΄ ν¬μν μκ°μ 5λ
, ν¬μν κΈμ‘μ 300λ§μμ΄λ€.λ΄κ° νλ¬μ μ½λ μ±
μ 200(κΆ)μ΄λ€.
μ΄ μ·¨λ―Έλ₯Ό μν΄ ν¬μν μκ°μ 6λ
, ν¬μν κΈμ‘μ 400λ§μμ΄λ€.λ΄κ° μ·¨λ―Έλ‘ λͺ¨μΌλ λ¬Όνμ λμκΈ°μ΄λ€.
*/
'Dev > Java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[κ°μ²΄(14)] (0) | 2022.05.15 |
---|---|
[κ°μ²΄(13)] μ€μ΅5, μ€μ΅6 (0) | 2022.05.15 |
[κ°μ²΄(11)] μ€μ΅3, μ€μ΅4 (0) | 2022.05.15 |
[κ°μ²΄(10)] μ€λ²λΌμ΄λ©(Overriding), μ€λ²λ‘λ©(Overloading) (0) | 2022.05.15 |
[κ°μ²΄(9)] μ€μ΅1, μ€μ΅2 (0) | 2022.05.15 |