π μ€λ²λΌμ΄λ©(Overriding)
: μμ ν΄λμ€κ° μμ λ°μ λΆλͺ¨ λ©μλλ₯Ό μ¬μμ± νλ κ²
: λΆλͺ¨κ° μ 곡νλ κΈ°λ₯μ νμμ΄ μΌλΆ κ³ μ³ μ¬μ©νκ² λ€λ μλ―Έλ‘ μμ κ°μ²΄λ₯Ό ν΅ν μ€ν μ νμμ κ²μ΄ μ°μ κΆμ κ°μ§
π§Έ νΉμ§
: λ©μλ ν€λλΌμΈ μμ λ°λμ Annotation, @Override νμ
: μ κ·Ό μ μ΄μλ₯Ό λΆλͺ¨ κ²λ³΄λ€ κ°κ±°λ λμ λ²μλ‘ λ³κ²½ κ°λ₯
: λΆλͺ¨ λ©μλμ μμΈ μ²λ¦¬ ν΄λμ€ μ²λ¦¬ λ²μλ³΄λ€ μ’μ λ²μλ‘ μμΈμ²λ¦¬ ν΄λμ€ μμ κ°λ₯
π§Έ μ±λ¦½ 쑰건
: λΆλͺ¨ ν΄λμ€μ λ©μλμ μμ ν΄λμ€μ λ©μλ λΉκ΅
- λ©μλ μ΄λ¦ λμΌ
- λ§€κ°λ³μμ κ°μ, νμ , μμ λμΌ
- λ¦¬ν΄ νμ λμΌ
π§Έ μ£Όμ μ¬ν
: private λ©μλ μ€λ²λΌμ΄λ© λΆκ°
π« μ€λ²λΌμ΄λ© μ€μ΅
package com.kh.p2.over.parent.model.vo;
public class Shop {
private String owner;//κ°κ²μ£ΌμΈ
private String address;//μ£Όμ
public Shop() {
super();
}
public Shop(String owner, String address) {
super();
this.owner = owner;
this.address = address;
}
public String getOwner() {
return owner;
}
public void setOwner(String owner) {
this.owner = owner;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "μ£ΌμΈ : " + owner + ", μ£Όμ : " +address;
}
public void order(String str) {
System.out.println(str + address + "μ μλ " + owner + " κ°κ²μμ μ£Όλ¬Ένλ€.");
}
}
package com.kh.p2.over.child.model.vo;
import com.kh.p2.over.parent.model.vo.Shop;
public class CoffeeShop extends Shop{
private String coffeeName;//컀νΌλͺ
private int price;//κ°κ²©
private String shopName;//κ°κ²λͺ
public CoffeeShop() {
}
public CoffeeShop(String coffeeName, int price, String shopName) {
super();
this.coffeeName = coffeeName;
this.price = price;
this.shopName = shopName;
}
public CoffeeShop(String owner, String address, String coffeeName, int price, String shopName) {
super(owner, address);
this.coffeeName = coffeeName;
this.price = price;
this.shopName = shopName;
}
public String getCoffeeName() {
return coffeeName;
}
public void setCoffeeName(String coffeeName) {
this.coffeeName = coffeeName;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public String getShopName() {
return shopName;
}
public void setShopName(String shopName) {
this.shopName = shopName;
}
@Override
public String toString() {
return "κ°κ²λͺ
: " + coffeeName + "κ°κ²© : " + price + "κ°κ²λͺ
: " + shopName;
}
@Override
public void order(String str) {
System.out.println(str + " " +super.getOwner() + "μ" + shopName + " κ°κ²μμ " +
coffeeName + "μ " + price + "λ₯Ό μ£Όκ³ μ£Όλ¬Ένλ€.");
}
}
package com.kh.p2.over.run;
import com.kh.p2.over.child.model.vo.CoffeeShop;
import com.kh.p2.over.parent.model.vo.Shop;
public class Run {
public static void main(String[] args) {
Shop sp = new Shop("μ΄μ¨λ€", "μμΈ κ΄μ
ꡬ");
System.out.println(sp);
sp.order("λΆλͺ¨ λ©μλ>> ");
CoffeeShop cs = new CoffeeShop("κΉμ¨λ€", "μμΈ κ°λ¨κ΅¬", "ν«μ΄μ½", 4000, "7κ·Έλ¨");
cs.order("μ€λ²λΌμ΄λ©μ μν μμ λ©μλ>> ");
}
}
/*
μ£ΌμΈ : μ΄μ¨λ€, μ£Όμ : μμΈ κ΄μ
ꡬ
λΆλͺ¨ λ©μλ>> μμΈ κ΄μ
ꡬμ μλ μ΄μ¨λ€ κ°κ²μμ μ£Όλ¬Ένλ€.
μ€λ²λΌμ΄λ©μ μν μμ λ©μλ>> κΉμ¨λ€μ7κ·Έλ¨ κ°κ²μμ ν«μ΄μ½μ 4000λ₯Ό μ£Όκ³ μ£Όλ¬Ένλ€.
*/
π« μ€λ²λΌμ΄λ© μΆκ°μ€μ΅
package com.kh.p2.over.child.model.vo;
import com.kh.p2.over.parent.model.vo.Shop;
public class CoffeeShop extends Shop{
private String coffeeName;//컀νΌλͺ
private int price;//κ°κ²©
private String shopName;//κ°κ²λͺ
public CoffeeShop() {
}
public CoffeeShop(String coffeeName, int price, String shopName) {
super();
this.coffeeName = coffeeName;
this.price = price;
this.shopName = shopName;
}
public CoffeeShop(String owner, String address, String coffeeName, int price, String shopName) {
super(owner, address);
this.coffeeName = coffeeName;
this.price = price;
this.shopName = shopName;
}
public String getCoffeeName() {
return coffeeName;
}
public void setCoffeeName(String coffeeName) {
this.coffeeName = coffeeName;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public String getShopName() {
return shopName;
}
public void setShopName(String shopName) {
this.shopName = shopName;
}
@Override
public String toString() {
return "κ°κ²λͺ
: " + coffeeName + ", κ°κ²© : " + price + ", κ°κ²λͺ
: " + shopName;
}
@Override
public void order(String str) {
System.out.println(str + " " +super.getOwner() + "μ" + shopName + " κ°κ²μμ " +
coffeeName + "μ " + price + "λ₯Ό μ£Όκ³ μ£Όλ¬Ένλ€.");
}
@Override
public boolean equals(Object obj) {
CoffeeShop cs = (CoffeeShop)obj;
// if(this.coffeeName == cs.coffeeName && this.price == cs.price && this.shopName == cs.shopName) {
// return true;
// }
// return false;
return this.coffeeName == cs.coffeeName && this.price == cs.price && this.shopName == cs.shopName;
}
@Override
public CoffeeShop clone() {
//return this;
return new CoffeeShop(coffeeName, price, shopName);
}
}
package com.kh.p2.over.run;
import com.kh.p2.over.child.model.vo.CoffeeShop;
import com.kh.p2.over.parent.model.vo.Shop;
public class Run {
public static void main(String[] args) {
Shop sp = new Shop("μ΄μ¨λ€", "μμΈ κ΄μ
ꡬ");
System.out.println(sp);
sp.order("λΆλͺ¨ λ©μλ>> ");
CoffeeShop cs = new CoffeeShop("κΉμ¨λ€", "μμΈ κ°λ¨κ΅¬", "ν«μ΄μ½", 4000, "7κ·Έλ¨");
cs.order("μ€λ²λΌμ΄λ©μ μν μμ λ©μλ>> ");
CoffeeShop cs1 = new CoffeeShop("μλ©λ¦¬μΉ΄λ
Έ", 3000, "7κ·Έλ¨");
CoffeeShop cs2 = new CoffeeShop("μλ©λ¦¬μΉ΄λ
Έ", 3000, "7κ·Έλ¨");
System.out.println(cs1);
System.out.println(cs2);
System.out.println(cs1.hashCode());
System.out.println(cs2.hashCode());
System.out.println("equals λΉκ΅ κ²°κ³Ό : " + cs1.equals(cs2));
CoffeeShop cs3 = null;
//protected Object clone();
cs3 = (CoffeeShop)cs1.clone();
System.out.println(cs3);
}
}
/*
μ£ΌμΈ : μ΄μ¨λ€, μ£Όμ : μμΈ κ΄μ
ꡬ
λΆλͺ¨ λ©μλ>> μμΈ κ΄μ
ꡬμ μλ μ΄μ¨λ€ κ°κ²μμ μ£Όλ¬Ένλ€.
μ€λ²λΌμ΄λ©μ μν μμ λ©μλ>> κΉμ¨λ€μ7κ·Έλ¨ κ°κ²μμ ν«μ΄μ½μ 4000λ₯Ό μ£Όκ³ μ£Όλ¬Ένλ€.
κ°κ²λͺ
: μλ©λ¦¬μΉ΄λ
Έ, κ°κ²© : 3000, κ°κ²λͺ
: 7κ·Έλ¨
κ°κ²λͺ
: μλ©λ¦¬μΉ΄λ
Έ, κ°κ²© : 3000, κ°κ²λͺ
: 7κ·Έλ¨
925858445
798154996
equals λΉκ΅ κ²°κ³Ό : true
κ°κ²λͺ
: μλ©λ¦¬μΉ΄λ
Έ, κ°κ²© : 3000, κ°κ²λͺ
: 7κ·Έλ¨
*/
π μ€λ²λ‘λ©(Overloading)
: ν ν΄λμ€ λ΄μμ κ°μ μ΄λ¦μ λ©μλλ₯Ό μ¬λ¬κ° μ μνλ κ²
π§Έ μ±λ¦½ 쑰건
- κ°μ λ©μλ μ΄λ¦
- λ€λ₯Έ λ§€κ°λ³μ μ μΈλΆ(λ§€κ°λ³μ νμ , κ°μ, μμ)
π§Έ μ£Όμ μ¬ν
: λ©μλμ λ¦¬ν΄ νμ μ μ€λ²λ‘λ© μ‘°κ±΄κ³Ό κ΄κ³ μμ
π final μμ½μ΄
π§Έ final ν΄λμ€
: μμμ΄ λΆκ°λ₯ν ν΄λμ€
ex) public final class FinalClass { }
π§Έ final λ©μλ
: μμ μ μ€λ²λΌμ΄λ©μ΄ λΆκ°λ₯ν λ©μλ
ex) public final void method() { }
'Dev > Java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[κ°μ²΄(12)] λ€νμ±(Polymorphism) (0) | 2022.05.15 |
---|---|
[κ°μ²΄(11)] μ€μ΅3, μ€μ΅4 (0) | 2022.05.15 |
[κ°μ²΄(9)] μ€μ΅1, μ€μ΅2 (0) | 2022.05.15 |
[κ°μ²΄(8)] μμ(Inherit) / super()μ super. / is a / has a (0) | 2022.05.10 |
[κ°μ²΄(7)] κ°μ²΄ λ°°μ΄ (0) | 2022.05.10 |