[자바] 처음 클래스에 오류발생

1번줄에 있는 Person은 왜 오류가 나는지 정말 모르겠고,
23번줄은 생성자 매개변수가 다르면 이름 같은거 사용할 수 있다고 알고 있는데 오류나는 이유를 잘 모르겠습니다…
2가지 오류발생하는 원인 가르쳐주시면 감사하겠습니다…ㅠㅠ

public class Person{
	String name;
	public String address;
	private int age;
	
	public int setAge(int age) {
		this.age = age;
	}
	public int getAge() {
		return age;
	}
	public Person(String name, String addr) {
		this.name=name;
		address=addr;
	}
	
}
class Employee extends Person{
	String department;
	public Employee(String name, String addr) {
		super(name,addr);
	}
	public Employee() {
		name = "David";
		address = "Ulsan";
	}
}
public class EmployeeDemo {
	public static void main(String[] args) {
		Employee a = new Employee();
		System.out.println(a.name);
	}
}

제가 찾은 오류들입니다.

  1. setAge 메서드의 오타

setAge 메서드는 반환을 하지 않으므로 public int setAge가 아니라 public void setAge로 바꾸셔야 합니다.

  1. Person 클래스의 기본 생성자가 없습니다.

아무런 생성자를 만들지 않으면 기본 생성자(인자를 받지 않는 생성자)가 자동으로 만들어지지만 인자가 있는 생성자를 만들면 기본 생성자는 명시적으로 만들지 않는 이상 생기지 않습니다.

Main 메서드에서 Employee의 기본 생성자를 호출하고 있는데 Employee는 Person을 상속하고 있으므로 먼저 Person의 기본 생성자를 호출하게 됩니다. 그런데 현재 Person의 기본 생성자가 없으므로 오류가 난 것 같습니다!

Person 클래스에 기본 생성자만 추가해주면 해결됩니다. public Person() {}

정말 상세한 답변 감사합니다.
아주 기본적인 내용들이였네요 잘 정리 해두겠습니다^^

1 Like