///////
Search

12_메소드 오버라이딩_이연재

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
복사