Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

재훈재훈

파라미터의 다형성 본문

Computer Engineering/JAVA

파라미터의 다형성

jaehoonx2 2018. 4. 7. 17:31

파라미터의 다형성

- 파라미터가 참조형일 경우, 메서드 호출 시 자신과 같은 타입,

  또는 자손 타입의 인스턴스를 넘겨줄 수 있다.


소스 출처 - 부경대 권오흠 교수님, <JAVA로 배우는 자료구조> 강의


예제)

public interface Comparable {                                         ← 인터페이스 Comparable

int compareTo(Object o );

}




public abstract class Shape implements Comparable {

...                                                ← Comparable를 구현한 추상클래스 Shape

public int compareTo(Object obj) {

double mine = this.computeArea();

double yours = ((Shape)obj).computeArea();

if (mine < yours)

return -1;

else if (mine==yours)

return 0;

else

return 1;

}

    ... ...


}


public class RtTriangle extends Shape {

...                                                 ← 추상클래스 Shape를 상속받은 클래스 RtTriangle 

}


----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Shape Program - 사각형, 원, 직각삼각형 등의 도형을 입력받아 저장하고 면적과 둘레, 길이 등을 보여주기도 함


bubbleSort(Comparable[] data, int size) - 도형배열(Shapes)에 있는 각 도형(Shape)의 넓이를 계산해서 넓이 순으로 정렬하는 메서드 

processCommand() - 본 프로그램에서 사용자 입력을 받아 프로세스를 진행시키는 함수


public void bubbleSort(Comparable [] data, int size) {

for ( int i=size-1; i>0; i-- ) {

for (int j=0; j<i; j++) {

if ( data[j].compareTo(data[j+1]) > 0 )

{

Comparable tmp = data[j];

data[j] = data[j+1];

data[j+1] = tmp;

}

}

}

}


public void processCommand() {

while(true) {

System.out.print("$ ");

String command = kb.next();

if (command.equals("add"))

handleAdd();

else if (command.equals("show") || command.equals("showdetail"))

handleShow( command.equals("showdetail") );

else if (command.equals("sort"))

bubbleSort(shapes, n);/                            //private Shape [] shapes = new Shape [capacity]; shape형 배열 변수

else if (command.equals("exit")) 

break;

}


bubble Sort()의 첫번째 매개변수의 타입이 shape가 아니라 comparable인 이유 - 다형성

shape 클래스가 comparable 인터페이스를 구현했기 때문!

comparable 인터페이스(참조변수)를 매개변수로 받으면서 Bubble Sort 함수는

generic한 특성을 갖게 된다.


인터페이스도 다형성의 영향을 받는다.


'Computer Engineering > JAVA' 카테고리의 다른 글

OODP - Singleton Pattern  (0) 2018.04.07
제네릭(Generic)  (0) 2018.04.07
추상클래스와 인터페이스  (0) 2018.04.07
다형성과 동적 바인딩  (0) 2018.04.07
상속과 생성자  (0) 2018.04.07