1.메소드 오버라이딩이란?
•
자식클래스가 부모클래스의 메소드를 자신의 필요에 맞추어 재정의하는 것으로 함수 바디부분만 달라진다.
-예제1)Shape을 상속받는 Rectangle, Circle, Triangle을 출력하기
-각 도형은 Shape을 상속 받으므로 draw()메소드를 자신의 필요에 맞추어 재정의 하여 사용하게 된다.
class Shape{
public void draw() {System.out.println("Shape");}
}
class Circle extends Shape{
@Override
public void draw() {System.out.println("Circle을 그립니다.");}
}
class Rectangle extends Shape{
@Override
public void draw() {System.out.println("Rectangle을 그립니다.");}
}
class Triangle extends Shape{
@Override
public void draw() {System.out.println("Triangle을 그립니다.");}
}
public class ShapeTest{
public static void main(String[] args){
Rectangle s = new Rectangle();
s.draw();
}
}
Plain Text
복사
2. 오버라이딩 vs 오버로딩
•
오버라이딩: 자식클래스가 부모클래스의 메소드를 자신의 필요에 맞추어 재정의하는 것으로 함수 바디부분만 달라진다.
•
오버로딩: 같은 이름의 메서드 여러개를 정의하고 매기변수의 유형과 개수를 다르게 하는 것이다.
-예제2)Exployee를 상속받는 Manager와 Programmer의 월급을 출력하기
class Employee{
private int salary;
public Employee() {
salary = 3000000; //기본급
}
public int getSalary() {
return salary;
}
public void setSalary(int salary) {
this.salary = salary;
}
}
class Manager extends Employee{
public Manager() {
super.setSalary(super.getSalary() + 2000000);
}
@Override
public int getSalary() {
return super.getSalary();
}
}
class Programer extends Employee{
public Programer() {
super.setSalary(super.getSalary() + 3000000);
}
@Override
public int getSalary() {
return super.getSalary();
}
}
public class Test {
public static void main(String[] args) {
Manager manager = new Manager();
System.out.println("관리자의 월급: "+manager.getSalary());
Programer programer = new Programer();
System.out.println("프로그래머의 월급: "+programer.getSalary());
}
};
Plain Text
복사