오버라이딩과 오버로딩


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


오버라이딩


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

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

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


오버로딩


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

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



예제 코드)




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



실행결과


JAVA 소개


미국의 선마이크로시스템즈가 개발한 객체 지향 프로그래밍 언어


특징


1. JRE이 설치되어 있으면 컴퓨터와 운영체제 상관없이 작동 - 운영체제에 독립적

2. 기본 자료형 이외에 모든 요소들이 객체로 표현

3. 캡슐화, 상속, 다형성이 잘 적용된 언어

4. GC(garbage collector)를 통한 자동 메모리 관리

5. 멀티 쓰레드 지원



객체지향프로그래밍(OOP)의 특징


1. 추상화

공통의 속성이나 기능을 묶어 이름을 붙이는 것

클래스를 정의하는 것 자체가 추상화라고 볼 수 있음


2. 캡슐화

데이터 구조와 데이터를 다루는 방법을 묶는 것

클래스 내부를 외부에서는 볼 수 없도록 하는 것 - 은닉화


3. 상속성

상위 클래스를 하위 클래스가 물려받는 것

상속을 이용해 재사용성을 증대시킬 수 있다.


4. 다형성

같은 메세지에 따라 클래스가 다른 행위를 하게 하는 것

이름은 같지만 파라미터에 따라 다른 동작을 하는 메소드들을 만듬

+ Recent posts