You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
class Fruit {
// Fruit (){} // 기본생성자가 없는데 왜 잘 동작하는지 궁굼합니다~
public static Fruit getFruit(String name) {
if ("Apple".equals(name)) {
return new Apple();
} else if ("Banana".equals(name)) {
return new Banana();
} else {
return new Strawberry();
}
}
}
class Apple extends Fruit {
public String print(){
return "Apple!!";
}
}
class Banana extends Fruit {
public String print(){
return "Banana!!";
}
}
class Strawberry extends Fruit {
public String print(){
return "Strawberry!!";
}
}
해당 코드가 잘 돌아가는 것이 의문입니다.
기본 생성자가 따로 없고 정적 팩토리 메서드만 있는데, 테스트 돌려보니까 잘 돌아가네요? 왜그런 것일까요?
public class FruitTest {
@Test
public void fruit_test(){
// 입력 매개변수에 따라 매번 다른 클래스의 객체를 반환할 수 있습니다.
Fruit fruit1 = Fruit.getFruit("Apple");
assertEquals(fruit1.getClass().getSimpleName(),"Apple");
Fruit fruit2 = Fruit.getFruit("Banana");
assertEquals(fruit2.getClass().getSimpleName(),"Banana");
Fruit fruit3 = Fruit.getFruit("asdfad");
assertEquals(fruit3.getClass().getSimpleName(),"Strawberry");
Apple apple = (Apple) Fruit.getFruit("Apple");
assertEquals(apple.print(),"Apple!!");
Banana Banana = (Banana) Fruit.getFruit("Banana");
assertEquals(Banana.print(),"Banana!!");
Strawberry Strawberry = (Strawberry) Fruit.getFruit("ewfsd");
assertEquals(Strawberry.print(),"Strawberry!!");
}
}
The text was updated successfully, but these errors were encountered:
자바는 아무런 생성자를 선언하지 않으면 기본적으로 숨겨져 있는(보이지 않는) 기본 생성자가 존재합니다.
따라서 질문에 적어주신 위 코드에서 Fruit를 비롯한 모든 클래스는 기본 생성자가 존재하게 됩니다.
classFruit {
// Fruit (){} // 기본 생성자가 보이지 않는 상태로 존재합니다.publicstaticFruitgetFruit(Stringname) {
if ("Apple".equals(name)) {
returnnewApple();
} elseif ("Banana".equals(name)) {
returnnewBanana();
} else {
returnnewStrawberry();
}
}
}
classAppleextendsFruit {
/* 아래와 같은 보이지 않는 기본 생성자가 존재 public Apple { super(); } */publicStringprint(){
return"Apple!!";
}
}
질문 :
해당 코드가 잘 돌아가는 것이 의문입니다.
기본 생성자가 따로 없고 정적 팩토리 메서드만 있는데, 테스트 돌려보니까 잘 돌아가네요? 왜그런 것일까요?
The text was updated successfully, but these errors were encountered: