Java

[Java] 메소드 오버라이딩 (Method Overriding)

건휘맨 2024. 6. 3. 11:41

메소드 오버라이딩(Method Overriding)

 

상속받은 함수를 재활용하여 코드를 작성할 수 있도록 한다.

자식 클래스에서 부모 클래스와 동일한 이름, 반환형, 매개변수를 가진 메소드를 정의하면

부모 클래스의 메소드 대신 자식 클래스의 메서드가 호출

 

부모 클래스

package model;

public class Parent {
	
    	//protected 접근 제어자는 같은 클래스나 같은 패키지의 클래스
    	//그리고 다른 패키지에서 상속받은 자식 클래스에서 접근할 수 있는 멤버를 지정
	protected String name;
	protected int age;
	protected int money;
	
	public Parent() {
		System.out.println("Parent Class 생성자 동작 1");
	}
	
	public Parent(String name, int age, int money) {
		this.name = name;
		
		if (age > 0) {
			this.age = age;
		}	
		
		this.money = money;
		
		System.out.println("Parent Class 생성자 동작 2");
	}

	public void print(){
		System.out.println("이름 : " + name + ", 나이 : " + age + ", 재산 : " + money);
	}
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {		
		if (age < 0) {
			return;
		}			
		this.age = age;		
	}
	public int getMoney() {
		return money;
	}
	public void setMoney(int money) {
		this.money = money;
	}
	
}

 

 

자식 클래스

상속받는 클래스를 작성할 때 @Override 어노테이션을 입력한다

package model;

public class Child extends Parent {
	
	//	String name;
	//	int age;
	//	int money;
	
	// 부모의 함수도 다 상속받는다.
	
	private String hobby;
	
	public Child() {
		System.out.println("Child Class 생성자 실행 1");
	}

	public Child(String name, int age, int money, String hobby) {
		super(name, age, money);
		this.hobby = hobby;
		System.out.println("Child Class 생성자 실행 2");
	}

	public String getHobby() {
		return hobby;
	}

	public void setHobby(String hobby) {
		this.hobby = hobby;
	}

	@Override
	public void print() {
		super.print();
		System.out.println("취미는 : " + hobby);
	}
	
}