βοΈ μ΄λ² μκ°μλ λ©ν λκ»μ μ§λ¬Έν΄μ£Όμ ¨λ μμκ³Ό μ‘°ν©μ λν΄ λ€λ€λ³ΌκΉ νλ€.
μ¬μ€ Java λΌλ μΈμ΄κ° μ κ°μ²΄μ§ν₯ μΈμ΄μΈμ§, μ΄λ¬ν νΉμ§μ ν΅ν΄ κ°μ§λ μ΄μ κ³Ό λ¨μ , λ¨μ μ ν΄κ²°νκΈ° μν΄ μ΄λ€ λ°©λ²λ€μ΄ μλμ§ μ λλ‘ μμ§ λͺ»ν μ± μ¬μ©νκ³ μμλ€. (μ§κΈκΉμ§λ!)
μ΄λ² κΈ°λ‘μ ν΅ν΄ μμκ³Ό ꡬν, κ·Έλ¦¬κ³ μ‘°ν©(Composition)μ νν€μ³λ³΄μ!
μμ (Inheritance)
μμμ ν΄λμ€ λͺ μ°μΈ‘μ extends λΌλ μμ½μ΄λ₯Ό ν΅ν΄ μμ λ°μ μ μκ³ , 1κ°μ ν΄λμ€λ§ μμ λ°μ μ μλ€.
μμ λ€μ΄μ΄κ·Έλ¨μ νμΈν΄λ³΄μ. λ¨Όμ Animal ν΄λμ€κ° μ΅μμ ν΄λμ€λ‘ μ‘΄μ¬νκ³ κ·Έ μλμ Mammal, Bird ν΄λμ€, μ΄ λ ν΄λμ€μ κ°κ° μλμ Dog, Whale, Eagle, Kiwi ν΄λμ€κ° μ‘΄μ¬νλ€. λ€μ΄μ΄κ·Έλ¨μμλ νμ ν΄λμ€λ€μ΄ μμ ν΄λμ€λ₯Ό ν₯ν΄ λ°λΌλ³΄κ³ μλλ° μ΄λ μμμ ννν κ²μ΄λ€.
Animal ν΄λμ€μ κ·Έμ μμμΈ Mammal, Bird ν΄λμ€μ μ½λλ₯Ό νμΈν΄λ³΄μ.
// Animal
public class Animal {
public int eyes = 2;
public int mouse = 1;
public int legs = 4;
public Animal() {
System.out.println("λλ λλ¬Όμ΄λ€.");
}
public void move() {
System.out.println("κ±Έμ΄μ μ΄λνλ€.");
}
public void breeding() {
System.out.println("λ²μνλ€.");
}
public void getElements() {
System.out.println("λ : " + eyes + "κ°");
System.out.println("μ
: " + mouse + "κ°");
System.out.println("λ€λ¦¬ : " + legs + "κ°");
}
}
// Mammal
public class Mammal extends Animal {
public Mammal() {
System.out.println("λλ ν¬μ λ₯λ€.");
}
public Mammal(int legs) {
this.legs = legs;
System.out.println("λ€λ¦¬κ° " + this.legs + "κ°λ₯Ό κ°μ§ ν¬μ λ₯λ€.");
}
@Override
public void breeding() {
System.out.println("μμ μΌλ‘ μμμ λ³μ μΈλλ₯Ό μλλ€.");
}
}
// Bird
public class Bird extends Animal {
public int wings = 2;
public Bird() {
this.legs = 2;
System.out.println("λλ μ‘°λ₯λ€.");
}
public Bird(int wings) {
this.wings = wings;
this.legs = 2;
System.out.println("λ κ°κ° " + this.wings + "κ°λ₯Ό κ°μ§ μ‘°λ₯λ€.");
}
public void fly() {
System.out.println("λ μμ μ΄λνλ€.");
}
@Override
public void breeding() {
System.out.println("μμ λ³μ μΈλλ₯Ό μλλ€.");
}
@Override
public void getElements() {
super.getElements();
System.out.println("λ κ° : " + wings + "κ°");
}
}
μνμ νλ
λ¨Όμ Animal ν΄λμ€μλ eyes, mouse, legs 3κ°μ λ©€λ² νλμ move(), breeding(), getElements() 3κ°μ λ©μλκ° μ μλμ΄ μλ€. Animalμ μμλ°λ μμ ν΄λμ€λΌλ©΄ 곡ν΅μ μΌλ‘ κ°μ§κ³ μμ΄μΌ νλ μν(Field)μ νλ(Method)μ΄λ€. μ¦, Mammalκ³Ό Bird ν΄λμ€λ 3κ°μ λ©€λ² νλμ 3κ°μ λ©μλλ₯Ό κ°μ§κ³ μλ€λ μλ―Έμ΄λ©°, μ΄λ SOLID μμΉμμ Liskov Substitution Principle (리μ€μ½ν μΉν μμΉ)μ μνλ©° μΌλ°μ μΈ IS-A κ΄κ³κ° μ±λ¦½λμ΄μΌ νλ€λ κ²μ μλ―Ένλ€.
λ€νμ± (Polymorphism)
Mammal ν΄λμ€μμλ breeding(), Bird ν΄λμ€μμλ legs νλμ breeding() λ©μλκ° μ¬μ μ λκ³ wings λΌλ λ©€λ² νλμ fly() λ©μλκ° μλ‘κ² μ μΈλμλ€. μ΄λ λ€νμ±(Polymorphism)μ νΉμ§μ λνλ΄λλ°, Overrideλ₯Ό ν΅ν΄ λΆλͺ¨ ν΄λμ€μμ μ μΈν λ©€λ² νλ, λ©μλλ₯Ό μ¬μ μνκ±°λ ν΄λΉ μμ ν΄λμ€μ μλ‘μ΄ λ©€λ² νλλ λ©μλλ₯Ό μ μΈνλ κ²μ νλμ ꡬνμ²΄κ° κ°κΈ° λ€λ₯Έ μνμ νλμ κ°μ§ μ μλ€λ κ²μ μλ―Ένλ€.
μ΄μ Mammal, Bird ν΄λμ€μ μμ ν΄λμ€ μ½λλ₯Ό 보며 μΆκ°μ μΈ νΉμ§μ μμ보μ.
// Dog
public class Dog extends Mammal{
public Dog() {
System.out.println("λλ κ°μμ§λ€.");
}
}
// Whale
public class Whale extends Mammal {
public boolean fin = true;
public Whale() {
super(0);
System.out.println("λλ κ³ λλ€.");
}
protected void swim() {
System.out.println("λ€λ¦¬ λμ μ§λλ¬λ―Έκ° μμ΄ ν€μμ³μ μ΄λνλ€.");
}
@Override
public void move() {
System.out.println("λ€λ¦¬κ° μμ΄ κ±Έμ΄μ μ΄λ ν μ μλ€.");
}
@Override
public void getElements() {
super.getElements();
System.out.println("μ§λλ¬λ―Έκ° μλ? : " + fin);
}
}
// Eagle
public class Eagle extends Bird {
public Eagle() {
System.out.println("λλ λ
μ리λ€.");
}
}
// Kiwi
public class Kiwi extends Bird {
public Kiwi() {
super(0);
System.out.println("λλ ν€μμλ€.");
}
@Override
public void fly() {
System.out.println("λ κ°κ° μμ΄ λ μ μλ€.");
}
}
super()
λΆλͺ¨ ν΄λμ€λ₯Ό μμ λ°μ μμ ν΄λμ€κ° new μμ±μλ‘ μ μΈλ λ, μμ ν΄λμ€λ§ λ©λͺ¨λ¦¬μ ν λΉλλ κ²μ΄ μλλΌ λΆλͺ¨ ν΄λμ€λ ν¨κ» ν λΉλλ€. μμ ν΄λμ€μ μμ±μκ° νΈμΆ λ λ, super()λΌλ μμ½μ΄κ° ν¨κ» νΈμΆλλλ°, λ³λλ‘ λΆλͺ¨ ν΄λμ€μμ μμ±μλ₯Ό μ μνμ§ μλ κ²½μ° μ»΄νμΌλ¬μ μν΄ μλμΌλ‘ μμ ν΄λμ€μ μμ±μμ μΆκ°λμ΄ μμ ν΄λμ€μ λΆλͺ¨ ν΄λμ€κ° λ©λͺ¨λ¦¬μ ν¨κ» ν λΉλ μ μλλ‘ νλ€.
λ¨, λΆλͺ¨ ν΄λμ€μμ κΈ°λ³Έ μμ±μλ₯Ό μ μνμ§ μκ³ λ§€κ° λ³μλ₯Ό λ°λλ‘ μμ±μλ₯Ό μ μνλ€λ©΄ μμ ν΄λμ€μ μμ±μμ λ§€κ° λ³μλ₯Ό λ£μ super() μμ½μ΄λ₯Ό νΈμΆν΄μΌνλ€. κ·Έλ μ§ μμΌλ©΄ μ»΄νμΌλ¬κ° λΆλͺ¨ ν΄λμ€μ κΈ°λ³Έ μμ±μλ₯Ό μ°Ύμ μ μμ΄ μ»΄νμΌ μλ¬κ° λ°μνλ€. κ·Έλ κΈ° λλ¬Έμ μ μ½λμ²λΌ λΆλͺ¨ ν΄λμ€μμ μ¬λ¬ μμ±μλ₯Ό μ μνλ κ²½μ°, κΈ°λ³Έ μμ±μλ₯Ό λͺ μμ μΌλ‘ μ μνλ κ²μ΄ μ’λ€.
리μ€μ½ν μΉν μμΉμ μ΄κΈλλ κ²½μ°
μμμ 리μ€μ½ν μΉν μμΉμ μ κΉ λ§λ΄€λλ°, ν΄λΉ μμΉμ κ°λ°© νμ μμΉμ κΈ°λ°νλ μμΉμΌλ‘ μλΈ νμ μ μΈμ λ κΈ°λ° νμ μΌλ‘ κ΅μ²΄ν μ μμ΄μΌ νλ μμΉμ΄λ€. κ·Όλ° μμ μ½λμμ 리μ€μ½ν μΉν μμΉμ κΉ¨λ μ½λκ° μ‘΄μ¬νλ€.
Whale is a Mammal.
Kiwi is a Bird.
λ°λ‘ Mammal - Whale, Bird - Kiwi μ μμ κ΄κ³μμ 리μ€μ½ν μΉν μμΉμ IS-A κ΄κ³κ° μ±λ¦½νμ§ λͺ»νλ€. μ¬κΈ°μ IS-A κ΄κ³λ, λΆλͺ¨ ν΄λμ€μμ μ μλ λͺ¨λ κ²λ€μ΄ μμ ν΄λμ€μμ λͺ¨λ μ¬μ©μ΄ κ°λ₯ν΄μΌ νλ κ²μ μλ―Ένλ€. νμ§λ§ μ¬κΈ°μ κ°μ²΄μ κ΄μ μΌλ‘ Mammal - Whale, Bird - Kiwi κ΄κ³λ₯Ό λ€μ¬λ€λ³΄λ©΄ κ·Έλ μ§ λͺ»νλ€. (κ°μ²΄κ΄μ μ νλ‘κ·Έλλ°μ μΆμ²νμ§ μλλ€. μμΈν λ΄μ©μ Youtubeμμ μ°ν
μ½ κ²μ!)
λ¨Όμ Mammal ν΄λμ€λ Animal ν΄λμ€μμ μ μν eyes, mouse, legsλ₯Ό μ¬μ μνμ§ μμλ€. κ·Έλ¬λ―λ‘ Whaleμ΄ κ·Έλλ‘ μμ λ°λλ€λ©΄ λ€λ¦¬κ° 4κ°μ΄λ©΄μ κ±Έμ μ μλ μ΄μ’ Whaleμ΄ νμνλ€. μ¦, Whaleμ Mammalμ μνλ κ°μ²΄κ° λ§μ§λ§ λΆλͺ¨ ν΄λμ€μ ꡬ쑰μ μν΄ λΆλͺ¨ ν΄λμ€μμ μ μν move() λ©μλλ₯Ό μ¬μ©νμ§ λͺ»νκΈ° λλ¬Έμ IS-A κ΄κ³λ₯Ό μ±λ¦½νμ§ λͺ»ν΄ ν΄λΉ μμΉμ μλ°°νλ€.
Bird - Kiwi μ κ΄κ³λ λμΌνλ€. Bird ν΄λμ€λ Animalμμ μ μν legsλ₯Ό 2κ°λ‘ μ¬μ μ νκ³ , Bird μμ μ¦λͺ νκΈ° μν΄ wings νλλ μ μΈνλ€. νμ§λ§ μ΄λ₯Ό μμλ°λ Kiwiλ wings(λ κ°)κ° μκ³ , μ΄ λλ¬Έμ fly() λ©μλλ₯Ό μ¬μ© ν μ μλ€.
μ΄λ κ² λ¦¬μ€μ½ν μΉν μμΉμ΄ μ΄κΈλλ κ²½μ°λ λ€μνκ² μ‘΄μ¬νλ©°, μ΄μ μλ°λλ κ²μ 곧 κ°λ°© νμ μμΉμ΄ 무λμ§λ κ²μ΄λΌκ³ λ΄λ 무방νλ€. λλ¬Έμ μ΄λ¬ν μμΉμ μλ°νμ§ μκΈ° μν΄μ Compositionμ΄λΌλ κ°λ μ μ¬μ©νκΈ°λ νλ€.
- λΆλͺ¨ ν΄λμ€μμ λͺ μν κ°μμ λ²μ΄λ κ°μ 리ν΄νλ€.
- λΆλͺ¨ ν΄λμ€μμ λ²μ΄λ μμΈλ₯Ό λ°μνλ€.
- λΆλͺ¨ ν΄λμ€λ₯Ό λ²μ΄λ κΈ°λ₯μ μννλ€.
- Array.asList() μ Listκ° λ°λ‘ ν΄λΉ μμΉμ μ΄κΈλλ λνμ μΈ μμμ΄λ€.
public class ArrayListTest() { public static void main(String[] args) { List list = Arrays.asList("aa","bb","cc"); List list2 = current(list); list2.forEach(l -> System.out.println(l)); } public static List current(List list) { String a = "hello"; list.add(a); return list; } } /* Exception in thread "main" java.lang.UnsupportedOperationException at java.util.AbstractList.add(AbstractList.java:148) at java.util.AbstractList.add(AbstractList.java:108) at Inheritance.InheritanceTest.main(ArrayListTest.java:42) */
μμμ νΉμ§λ§ λ½μλ¨ΉκΈ°
π μμμ extends μμ½μ΄λ₯Ό μμ©ν΄ μ΅λ 1κ°μ ν΄λμ€λ₯Ό μμ λ°μ μ μλ€.
π λΆλͺ¨ ν΄λμ€μμ λ³λμ μμ±μ μ μΈμ΄ μλ€λ©΄ μμ ν΄λμ€κ° μ μΈλ λ, μμ ν΄λμ€μ μμ±μμ μ»΄νμΌλ¬κ° super() μμ½μ΄λ₯Ό μΆκ°νμ¬ λΆλͺ¨, μμ ν΄λμ€κ° λ©λͺ¨λ¦¬μ ν λΉλ μ μλλ‘ νλ€.
π μμμ 리μ€μ½ν μΉν μμΉμ λ°λ₯΄μ§λ§ Array.asList()μ List μΈν°νμ΄μ€μ²λΌ μ΄λ₯Ό μλ°νλ κ²½μ°λ μμΌλ©°, μ΄λ₯Ό μλ°ν κ²½μ° μΊ‘μνμ κ°λ°© νμ μμΉμ μλ°νλ κ²μ΄λ€. (μ΄λ₯Ό ν΄κ²°νκΈ° μν΄ Compositionμ μ¬μ©.)
π @Override λ₯Ό ν΅ν΄ λΆλͺ¨ ν΄λμ€μμ μ μλ λ©μλ, λ©μλλ₯Ό μμ ν΄λμ€μμ μ¬μ μλ₯Ό μννλ©΄μ λ€νμ±μ νΉμ§μ κ°μ§λ€.
π μ»΄νμΌ μμ μ κ°μ²΄μ ꡬνμ²΄κ° κ²°μ λκΈ° λλ¬Έμ μ€κ³μ μ μ°νμ§ λͺ»νλ€.
π μ»΄λΆλͺ¨ ν΄λμ€μ λ΄λΆ ꡬνμ΄ λ¬λΌμ§λ©΄ νμ ν΄λμ€λ₯Ό κ³ μ³μΌνλ κ²½μ°κ° λ°μνλλ°, μ΄λ μΊ‘μ νλ₯Ό μλ°νλ€.
μ‘°ν© (Composition)
μμμ μμλ΄€λ κ² μ²λΌ Javaμ μμμ μΈμ λ μλ²½νμ§λ μλ€. μ΄λ₯Ό 보μνκ³ ν΄κ²°νκΈ° μν΄ Compositionμ΄λΌλ κ°λ μ΄ λ±μ₯νλ€. Compositionμ΄λ ꡬμ±μ΄λΌλ μλ―Έλ‘ ν΄λμ€μ λ©€λ² λ³μμ μ°Έμ‘° κ°μ²΄λ₯Ό μ μΈνκ³ , μ΄λ₯Ό μμ±μλ₯Ό ν΅ν΄ κΈ°μ‘΄μ λ§λ€μ΄μ§ κ°μ²΄λ₯Ό μ£Όμ νμ¬ ν΄λΉ ν΄λμ€μμ μ°Έμ‘°ν κ°μ²΄λ₯Ό μμ λ°μ§ μμλ ν΄λμ€μ μΈμ€ν΄μ€ λ³μλ‘ μ°Έμ‘°νκ³ μλ κ°μ²΄μ λ©μλλ₯Ό νΈμΆ ν μ μλλ‘ μ€κ³νλ κ²μ μλ―Ένλ€. μ΄λ₯Ό ν΅ν΄ νλμ κ°μ²΄λ§ μ°Έμ‘° ν μ μλ Inheritanceμ λ€λ₯΄κ², Compositionμ ν΄λΉ κ°μ²΄μμ μ°Έμ‘°ν μ¬λ¬ κ°μ²΄λ₯Ό μΈμ€ν΄μ€ν νλ―λ‘μ¨ Inheritanceλ³΄λ€ λ§μ κ°μ²΄λ₯Ό μ°Έμ‘° ν μ μλ€λ μ΄μ μ΄ μλ€. λν, μ°Έμ‘°ν κ°μ²΄μ λ©μλλ₯Ό μ°Έμ‘° κ°μ²΄μμ μλν κ°μΌλ‘ μ¬μ μ μμ΄ λ¦¬ν΄νμ¬ μ¬μ© ν μ μλ€λ μ μ 리μ€μ½ν μΉν μμΉκ³Ό κ°λ°© νμ μμΉμ μ λ°λ₯΄λ κ²μΌλ‘ λ³Ό μ μλ€.
κ·Έ μλ‘, νλ²κ±° μΈνΈλ₯Ό μκ°ν΄λ³΄μ. κΈ°μ‘΄μ Inheritanceλ₯Ό μ΄μ©ν΄ νλ²κ±° μΈνΈλ₯Ό λ§λ€μλ€κ³ κ°μ νμ λ, νλ²κ±°μ μ½λΌ κ·Έλ¦¬κ³ κ°μνκΉμ΄ νλ²κ±° μΈνΈλ₯Ό μμ λ°λλ€. νμ§λ§ μ΄λ IS-A κ΄κ³λ₯Ό μ±λ¦½νμ§ λͺ»νλ€. νλ²κ±°μ κ°μνκΉμ λ¨Ήμ μ μμ§λ§ μ½λΌμ²λΌ λ§μ€ μλ μλ€. μ¦, μ΄ μΈ κ°μ§ κ°μ²΄λ λΆλͺ¨ κ°μ²΄μμ μλν μνμ νλμ κ·Έλλ‘ λ¬Όλ €λ°μ§ λͺ»νλλ°, μ΄λ νλ²κ±° μΈνΈλ νλ²κ±°μ μ½λΌ κ·Έλ¦¬κ³ κ°μνκΉ μμ²΄κ° λ μ μλ€λ κ²μ μλ―Ένλ©° 리μ€μ½ν μΉν μμΉ λ° κ°λ°© νμ μμΉμ μ΄κΈλλ€.
public class HamburgerSet extends Menu {
public Hamburger hamburger;
public Coke coke;
public FrenchFries frenchFries;
public HamburgerSet(Hamburger hamburger, Coke coke, FrenchFries frenchFries) {
this.hamburger = hamburger;
this.coke = coke;
this.frenchFries = frenchFries;
this.name = hamburger.getName() + " μΈνΈ";
this.price = (this.hamburger.getPrice() + this.coke.getPrice() + this.frenchFries.getPrice()) - 2000;
System.out.println(this.name + " κ°κ²© : " + this.price + "μ");
}
public void getHamburger() {
System.out.println("λ¨ν λ©λ΄λͺ
: " + this.hamburger.getName());
System.out.println("λ¨ν κ°κ²© : " + this.hamburger.getPrice() + "μ");
}
public void getCoke() {
System.out.println("λ¨ν λ©λ΄λͺ
: " + this.coke.getName());
System.out.println("λ¨ν κ°κ²© : " + this.coke.getPrice() + "μ");
}
public void getFrenchFries() {
System.out.println("λ¨ν λ©λ΄λͺ
: " + this.frenchFries.getName());
System.out.println("λ¨ν κ°κ²© : " + this.frenchFries.getPrice() + "μ");
}
}
Compositionμ νΉμ§ λ½μλ¨ΉκΈ°
π λ€λ₯Έ κ°μ²΄λ₯Ό μΈμ€ν΄μ€ λ³μλ‘ μ μΈνλ―λ‘μ¨ ν΄λΉ μΈμ€ν΄μ€μ λ©μλλ₯Ό νΈμΆ ν μ μλ€.
π μΈμ€ν΄μ€λ‘ μ μΈλ κ°μ²΄μ λ΄λΆ κ΅¬μ‘°κ° λ°λλλΌλ μν₯μ λ°μ§ μλλ€.
π μΈν°νμ΄μ€λ‘ Compositionμ ꡬννλ©΄ ꡬν체μ Typeμ μμ½κ² λ°κΏ μ μλ€.
Inheritance, Composition
λ§₯λλ λμ λ©λ΄νμ κ°μ§κ³ μλ€. μ μ ν μμκ° μλ μ μμ§λ§, μ§μ μ½λλ‘ κ΅¬νν΄λ³΄λκΉ λ§μ κΈμμ μ€λͺ νκ³ μλ λ΄μ©λ€μ΄ λ μλΏλ κ² κ°μ μ€λͺ ν΄λ³΄λ €κ³ νλ€.
λ¨Όμ Menu κ°μ²΄λ λͺ¨λ κ°μ²΄λ€μ μ‘°μμ΄κΈ° λλ¬Έμ νμ κ°μ²΄λ€μ Menu κ°μ²΄λ₯Ό μμ λ°μΌλ©°, μμ κ°μ²΄λ€μ κΈ°λ³Έ μμ±μλ₯Ό νλμ© κ°μ§κ³ μκ³ μ΄ λ ν΄λΉ κ°μ²΄μ λ©λ΄λͺ (name)κ³Ό κ°κ²©(price)μ μ¬μ μνλ€.
HamburgerSetμ κ²½μ°, μΈμλ‘ λ°λ κ°μ²΄μ μ’ λ₯μ λ°λΌ μνκ° λ¬λΌμ§λ©° μΈμ€ν΄μ€ λ³μλ‘ μ μΈν hamburger, coke, frenchfiesλ₯Ό μμ±μμμ μ£Όμ λ°μ κ° κ°μ²΄μ λ©μλλ₯Ό μ μ½μμ΄ νΈμΆ ν μ μλ€. μ΄λ κ² HamburgerSetμ μ¬λ¬ μ°Έμ‘° κ°μ²΄λ‘ ꡬμ±ν κ²μ Compositionμ΄λΌκ³ νλ€.
public class CompositionTest {
public static void main(String[] args) {
// λΉ
λ§₯ μΈνΈλ§λ€κΈ°
// μ½ν¬ > λ€μ΄μ΄νΈ μ½λΌλ‘ λ³κ²½
// νλ μΉνλΌμ΄ > μΉμ¦ νλ μΉνλΌμ΄ λ³κ²½
Hamburger bigMac = new BigMac();
Coke dietCoke = new DietCoke();
FrenchFries cheeseFrenchFries = new CheeseFrenchFries();
HamburgerSet bigMacSet = new HamburgerSet(bigMac, dietCoke, cheeseFrenchFries);
bigMacSet.getHamburger();
bigMacSet.getCoke();
bigMacSet.getFrenchFries();
System.out.println();
// μΉμ¦λ²κ±°
// κΈ°λ³Έ ꡬμ±
Hamburger cheeseBurger = new CheeseBurger();
Coke coke = new Coke();
FrenchFries frenchFries = new FrenchFries();
HamburgerSet cheeseBurgerSet = new HamburgerSet(cheeseBurger, coke, frenchFries);
cheeseBurgerSet.getHamburger();
cheeseBurgerSet.getCoke();
cheeseBurgerSet.getFrenchFries();
}
}
/*
λΉ
λ§₯ μΈνΈ κ°κ²© : 7500μ
λ¨ν λ©λ΄λͺ
: λΉ
λ§₯
λ¨ν κ°κ²© : 4500μ
λ¨ν λ©λ΄λͺ
: λ€μ΄μ΄νΈ μ½λΌ
λ¨ν κ°κ²© : 2000μ
λ¨ν λ©λ΄λͺ
: μΉμ¦ νλ μΉνλΌμ΄
λ¨ν κ°κ²© : 3000μ
μΉμ¦λ²κ±° μΈνΈ κ°κ²© : 3500μ
λ¨ν λ©λ΄λͺ
: μΉμ¦λ²κ±°
λ¨ν κ°κ²© : 2500μ
λ¨ν λ©λ΄λͺ
: μ½μΉ΄μ½λΌ
λ¨ν κ°κ²© : 1500μ
λ¨ν λ©λ΄λͺ
: νλ μΉνλΌμ΄
λ¨ν κ°κ²© : 1500μ
*/
π€ μ¬μ€ μ§κΈκΉμ§ μ μμμ λ°μμΌ νλμ§ λͺ¨λ₯Έμ± κ°λ°νμλ€.
μ΄λ² μκ°μ ν΅ν΄ μ§μ μμμ ꡬνν΄λ³΄λ©΄μ μ΄λ»κ² νλ©΄ λ μ’μ μ½λλ‘ μμ± ν μ μμμ§ λ§μ κ³ λ―Όμ ν μ μμλ μκ°μ΄μκ³ , Compositionμ ꡬννλ©° Spring Bootμ Bean μμ±κ³Ό κ΅μ₯ν λΉμ·νλ€κ³ λκΌλλ° Springμ λν΄μ 곡λΆνκ² λλ©΄ μ‘°κΈ λ μμλ³΄λ €κ³ νλ€.
μ§κΈκΉμ§ μ무 μλ―Έλ λͺ¨λ₯΄κ³ μΌλ μ½λλ€μ΄ 리μ€μ½ν μΉν μμΉμ΄λ κ°λ°© νμ μμΉ, λ€νμ±κ³Ό μΊ‘μ ν λ± λ€μν μ΄λ‘ μ κ·Όκ±°νμ¬ λ§λ€μ΄μ‘λ€λ κ²μ μ λ§ λλλ€. λ κΉμ΄ 곡λΆν΄μ μ¬λ¬ μ¬νλ€μ κ³ λ €ν μ’μ μ½λλ₯Ό μμ± ν μ μλ κ°λ°μλ‘ μ±μ₯ν΄μΌκ² λ€.
μ°Έκ³ μλ£
'Programming > Java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
F011 - java.lang.ref (0) | 2021.05.19 |
---|---|
F010 - System.out.println(), Logger (0) | 2021.05.19 |
F008 - Garbage Collector (2) | 2021.05.16 |
F007 - JVM : Memory Architecture (0) | 2021.05.14 |
F006 - Throwable, Exception, Error (0) | 2021.05.11 |