April 04, 2022
class Animal {
String name;
void setName(String name) {
this.name = name;
}
}
class Dog extends Animal {
void sleep() {
System.out.println(this.name+"zzz");
}
}
class HouseDog extends Dog {
HouseDog(String name) {
this.setName(name);
} // Constructor
void sleep() {
System.out.println(this.name+" zzz in house");
}
void sleep(int hour) {
System.out.println(this.name+" zzz in house for " + hour + " hours");
}
}
/**
* Sample
*/
public class Sample {
public static void main(String[] args) {
HouseDog dog = new HouseDog("Happy"); // 생성자를 전달하지 않으면 컴파일 에러
System.out.println(dog.name);
}
}
Constructor
)를 사용한다.생성자가 만들어지면 생성자를 누락한 상태에서 객체 생성시 컴파일 에러가 발생한다.
HouseDog dog = new HouseDog("happy"); -> ⭕️
HouseDog dog = new HouseDog(); -> ❌
return
타입을 명시 하지 않는다 (void
도 허용하지 않는다.)class Animal {
String name;
void setName(String name) {
this.name = name;
}
}
class Dog extends Animal {
void sleep() {
System.out.println(this.name + " zzz");
}
}
class HouseDog extends Dog {
HouseDog(String name) {
this.setName(name);
}
HouseDog(int type) {
if (type == 1) {
this.setName("yorkshire");
} else if (type == 2) {
this.setName("bulldog");
}
} // Constructor overloading
void sleep() {
System.out.println(this.name + " zzz in house");
}
void sleep(int hour) {
System.out.println(this.name + " zzz in house for " + hour + " hours");
}
}
public class Sample {
public static void main(String[] args) {
HouseDog happy = new HouseDog("happy");
HouseDog yorkshire = new HouseDog(1); // 오버로딩된 생성자 사용
System.out.println(happy.name); // happy 출력
System.out.println(yorkshire.name); // yorkshire 출력
}
}
Constructor overloading
이라 한다.