posted by 셀로브 2013. 10. 20. 03:26

부모클래스 Animal에 자식클래스 Dog, Cat, Duck이 있다.



자식클래스들은 각각 부모클래스의 Speek()함수를 재정의 하고고 있다.

재정의 한 내용은 다음과 같다고 가정하자.


Dog

public void Speek(){

    System.out.println("멍멍 ");

}


Cat

public void Speek(){

    System.out.println("야옹 ");

}


Duck

public void Speek(){

    System.out.println("꽥꽥 ");

}


Dog, Cat, Duck은 Animal의 자식클래스 이므로 다음과 같은 객체생성이 가능하다.


Animal dog = new Dog();

Animal cat = new Cat();

Animal duck = new Duck();


그리고 다음과 같이 함수를 호출해보자.
dog.speek();
cat.speek();
duck.speek();


각각의 자식클래스는 재정의한 speek함수의 동작을 수행하게 된다.


실행결과

 멍멍 야옹 꽥꽥


이처럼 다형성을 활용하면 서로 다른 서브클래스의 객체가 동일한 함수호출로 다른 응답을 하도록 구성할 수 있다.


'언어(Language) > JAVA' 카테고리의 다른 글

Java 한글 <-> 유니코드 변환  (0) 2013.12.19
Text File Read Write  (0) 2013.12.18
IS-A 관계와 HAS-A 관계  (0) 2013.10.20
캡슐화  (0) 2013.10.20
상속  (0) 2013.10.20
posted by 셀로브 2013. 10. 20. 02:37

상속은 중복되는 코드를 피할 수 있는 장점이 있습니다. 하지만 많은 경우 의존도가 높아지는 단점이 있습니다. 다음은 상속의 기본 구조입니다.


부모클래스(Super Class)

public class Airplane{

private int speed;


public Airplane(){

}

public int getSpeed(){

return speed;

}

public void setSpeed(int speed){

this.speed = speed;

}

}


자식클래스(Sub Class)

public class Jet extends Airplane{

private static final int MULTIPLIER = 2;


public Jet(){

super();    // 수퍼클래스(부모클래스)의 생성자를 호출 합니다.

}

public void setSpeed(int speed){    // 함수 오버라이딩 (부모클래스의 멤버함수를 재정의)

super.setSpeed(speed * MULTIPLIER);

}

public void accelerate(){

super.setSpeed(getSpeed() * 2);

}

}


위 상속을 UML로 표현하면 다음과 같습니다.



더 공부하기

캡슐화

다형성

IS-A관계와 HAS-A관계


'언어(Language) > JAVA' 카테고리의 다른 글

Java 한글 <-> 유니코드 변환  (0) 2013.12.19
Text File Read Write  (0) 2013.12.18
IS-A 관계와 HAS-A 관계  (0) 2013.10.20
캡슐화  (0) 2013.10.20
다형성  (0) 2013.10.20
posted by 셀로브 2013. 10. 20. 02:12

대화할때마다 소스코드를 보여주는 것은 쉽지 않은 일이다. 특히 고객들이 소스코드를 알 필요는 없다.

UML(Unified Modeling Language)은 개발자와 고객이 필요한 핵심 내용들만 소통하기 위한 언어이다.


클래스 다이어그램에서 클래스를 표현하는 방법은 다음과 같다.

Airplane 

 speed:int

 getSpeed():int
 setSpeed(int)


첫번째 행부터 클래스명, 멤버변수, 멤버함수를 나타낸다. 클래스명은 굵게 표기한다.


멤버변수의 타입과  멤버함수의 반환형은 콜론(':')뒤에 표기한다.


멤버함수명뒤의 괄호안에는 매개변수의 타입을 표기한다.