오버라이딩과 오버로딩


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


오버라이딩


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

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

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


오버로딩


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

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



예제 코드)




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



실행결과


ArrayList란?



배열을 사용하여 리스트를 구현한 것


ArrayList의 구성 - 엘리먼트들로 구성

element의 구성 - 데이터와 인덱스로 구성


장점 - 인덱스를 가지고 있기에 조회가 빠르다

단점 - 추가/삭제시 엘리먼트들을 밀고 당기는 작업이 필요하기 때문에 추가/삭제 속도가 느리다.

   데이터 공간의 낭비가 발생한다.



LinkedList란?


노드와 노드간의 연결로 리스트를 구현한 것


LinkedList의 구성 - Node(or vertex)로 구성, Head는 첫번째 Node를 가리킨다.

Node의 구성 - 데이터를 담는 data field, 연결정보를 담고 있는 linkd field


장점 - 추가/삭제가 빠르다. 데이터 공간의 낭비가 없다

단점 - 조회시 일일히 다 순회하기 때문에 느리다.

'자료구조' 카테고리의 다른 글

[Map] HashMap  (0) 2017.03.10
[Set]HashSet의 특징  (1) 2017.03.09
[그래프]넓이 우선 탐색(BFS)  (0) 2017.03.07
[그래프] 인접리스트와 인접행렬을 이용한 구현  (0) 2017.02.26
Array 배열 for Java  (0) 2016.12.23

+ Recent posts