JAVA/java 공부

[JAVA] overriding 오버라이딩

congs 2023. 3. 25. 19:03

오버라이딩

: 부모클래스에서 물려받은 메서드를 재정의하는 것

 

⭐ 사용시 주의할점

1. 부모클래스의 메서드와 선언부가 완전히 일치해야함

2. 접근 제한자는 같거나 더 넓은 범위를 사용 (범위 축소x)

 

//부모 클래스
class Animal {
	private String name; //이름
	private String category; //종
	
	//생성자
	public Animal() { }
	
	public Animal(String name, String category) {
		this.name = name;
		this.category = category;
	}

	//info 메서드
	public void info() {
		System.out.println("===============");
		System.out.println("이름: " + name);
		System.out.println("분류: " + category);
		
	}
	
	//울음소리 메서드
	public void howl() {
		System.out.println("==" + name + " 울음소리==");	
	}

	//getter/setter
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getCategory() {
		return category;
	}

	public void setCategory(String category) {
		this.category = category;
	}	
	
}

//<자식 클래스>
class Dog extends Animal {

	public Dog() {
		setName("멍멍이");
		setCategory("개과");
//		public void setName(String name) {
//			this.name = name;
//		} => Animal의 setName사용
	}

	@Override
	public void howl() {
		super.howl(); //super사용: 부모클래스의 값을 가져오기!
		System.out.println("멍멍!");
	}//System.out.println("==" + name + " 울음소리==");
	
}