오버라이딩과 오버로딩


오버로딩와 오버라이딩 모두 자바에서 다형성을 지원하는 방법


오버라이딩


흔히, 재정의라고 불린다.

상속관계에서 하위클래스가 상위 클래스의 맴버로 포함된 메서드를 재정의하여 쓰는 것

메서드의 이름은 같지만 안의 구현부만 다르다.


오버로딩


오버로딩의 종류로는 생성자 오버로딩, 메서드 오버로딩이 있다.

메서드의 이름은 같지만 파라미터 타입, 개수에 따라 여러 메서드를 정의하는 것을 말한다.



예제 코드)




Pen.java


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package co.kr.javastudy.override;
 
public class Pen {
    
    public String maker;
    public int price;
        
    //생성자 오버로딩
    //01.인자를 하나만 같는 생성자
    Pen(String maker) {
        this.maker = maker;
    }
    
    //02. 인자를 두개 같는 생성자
    Pen(String maker, int price) {
        this(maker);
        this.price = price;
    }
    
    public void write() {
        System.out.println("펜을 쓰다");
    }
}
cs



RedPen.java


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package co.kr.javastudy.override;
 
public class RedPen extends Pen{
    
    public String color = "red";
    
    RedPen(String maker) {
        super(maker);
    }
    
    @Override
    public void write() {
        System.out.println("빨간 펜으로 쓴다.");
    }
    
    //메서드 오버로딩
    //메서드 이름은 같지만 파라미터가 달라서 가능!
    public void write(String place) {
        System.out.println(place + "에 빨칸펜으로 쓴다");
    }
}
cs



main.java


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package co.kr.javastudy.override;
 
public class main {
    public static void main(String[] args) {
        
        //생성자 오버로딩
        //생성자 오버로딩을 이용해 다양한 파라미터를 전달하여 객체 생성 가능
        Pen pen = new Pen("모나미"200);
        Pen pen2 = new Pen("BIC");
        
        RedPen pen3 = new RedPen("제브라");
        
        
        //메서드 오버로딩 실행 예
        pen3.write("스케치북");
        pen3.write();
        
    }
}
cs



실행결과


+ Recent posts