오버라이딩
상속받은 조상의 메서드를 자신에 맞게 변경하는 것
오버라이딩의 조건 (외워야함)
1) 선언부(이름,매개변수,리턴타입)유가 조상 클래스의 메서드와 일치해야 한다.
2)접근 제어자(defult)를 조상 클래스의 메서드 보다 좁은 범위로 변경할 수 없다
3)예외는 조상 클래스의 메서드보다 많이 선언할 수 없다
오버로딩은 상속과 관계없음, 오버라이딩은 상속받은 걸 변경
오버라이딩 예시
class Parent {
void display() { System.out.println("부모 클래스의 display() 메소드입니다."); }
}
class Child extends Parent {
void display() { System.out.println("자식 클래스의 display() 메소드입니다."); }
}
public class Inheritance05 {
public static void main(String[] args) {
Parent pa = new Parent();
pa.display();
Child ch = new Child();
ch.display();
Parent pc = new Child();
pc.display(); // Child cp = new Parent();
}
}
HTML
복사
오버라이딩 미니 프로젝트
package course_0926;
class Employee{
int salary = 0;
public void setSalary(int salary) {
this.salary = salary;
}
public int getSalary(){
return salary;
}
}
class Manager extends Employee{
@Override
public int getSalary(){
return 5000000;
}
}
class Programmer extends Employee{
@Override
public int getSalary(){
return 6000000;
}
}
public class MiniProject {
public static void main(String[] args) {
Manager obj1 = new Manager();
System.out.println("관리자의 월급: " + obj1.getSalary());
Programmer obj2 = new Programmer();
System.out.println("관리자의 월급: " + obj2.getSalary());
}
}
HTML
복사
메소드 오버로딩
기존에 없는 새로운 메서드를 정의하는 것
오버로딩 예시