오버라이딩과 오버로딩
오버로딩와 오버라이딩 모두 자바에서 다형성을 지원하는 방법
오버라이딩
흔히, 재정의라고 불린다.
상속관계에서 하위클래스가 상위 클래스의 맴버로 포함된 메서드를 재정의하여 쓰는 것
메서드의 이름은 같지만 안의 구현부만 다르다.
오버로딩
오버로딩의 종류로는 생성자 오버로딩, 메서드 오버로딩이 있다.
메서드의 이름은 같지만 파라미터 타입, 개수에 따라 여러 메서드를 정의하는 것을 말한다.
예제 코드)
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' 카테고리의 다른 글
[HttpClient]HttpClient를 이용해 request 보내기 (0) | 2017.05.31 |
---|---|
JAVA 특징와 OOP (0) | 2017.05.12 |
[Reflect]Refletion의 정의와 동적 메소드 호출 (0) | 2017.03.17 |
[Collection] 동기화된 컬렉션 (0) | 2017.03.10 |
[람다식]메소드와 생성자 참조 (0) | 2017.03.08 |