Name name = new Name();
System.out.println(name.name); // null
class Name{
String name;
}
//-------------------------//
Name name = new Name();
System.out.println(name.name); // no name
class Name{
String name;
Name (){
this.name = "no name";
}
}
package org.example.testing;
public class Testing {
// 문제 : 아래와 같이 출력되도록 해주세요. init() 메세드에 의해서 출력되어야 합니다.
// 조건 : 사람 클래스의 생성자는 사용할 수 없습니다, 동물 클래스를 수정하여 문제를 풀어주세요.
// 힌트 : 모든 생성자는 자신의 일을 하기 전에 super(); 부터 실행합니다.
// 힌트 : 모든 생성자는 자신의 일을 하기 전에 부모클래스의 생성자 부터 실행합니다.
public static void main(String[] args) {
new 사람();
// 출력 : 사람이 초기화 됩니다.
}
}
class 동물 {
// 수정가능지역 시작
public 동물() {
init();
}
void init() {
System.out.println("사람이 초기화 됩니다.");
}
// 수정가능지역 끝
}
class 사람 extends 동물 {
void init() {
System.out.println("사람이 초기화 됩니다.");
}
}
⚠️ 사실 this(); 를 쓰지않고 기본생성자에서 바로 부모 생성자로 넘기는게 더 간편하다.
package org.example.testing;
public class Testing {
// 문제 : 아래가 오류없이 실행되도록 해주세요.
// 조건 : 사람 클래스만 수정할 수 있습니다.
public static void main(String[] args) {
new 사람();
}
}
class 동물 {
동물(String 이름) {
System.out.println("동물(String 이름) 실행됨!");
System.out.println("이름 : " + 이름);
}
동물(String 이름, int 나이) {
System.out.println("동물(String 이름, int 나이) 실행됨!");
System.out.println("이름 : " + 이름);
System.out.println("나이 : " + 나이);
}
}
class 사람 extends 동물 {
사람(){
this(23);
}
사람(int age) {
super("홍길동", age);
}
}