본문 바로가기
프로그래밍 언어

상속과 포함관계

by do_ng 2020. 3. 11.

 ** 설계 측면 **

1.상속관계(is ~ a : 상속) 은 ~ 이다  
2.포함관계 (has ~ a : 포함) 은 ~ 을 가지고있다 (member field) 

 

ex) 원      도형(점,선,면) 

1.원은 도형이다 (상속관계) 원 extends 도형 

2.원은 도형을 가지고있다(케바케) - 포함관계 

     원        점 

  1.원은 점이다 (X)

  2.원은 점을 가지고있다(O) - 포함관계 

 

 ex) 원,삼각형,사각형 만드는 설계도 작성 

도형 : 추상화,일반화 >> 공통분모 - 그리다,색상 

원 : 구체화 >> 점(포함관계) >> 반지름(원만이 가지는 특징) - 특수성 

점 : 좌표값(x,y) >> 원,삼각형,사각형은 점을 가지고 있다. 

 

class Shape -> 일반화,추상,공통 >> 상속

class Point -> 점 >> 포함 

 

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

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

//추상화 , 일반화 ,공통  

class Shape{ 

String color = "gold"; // 공통속성  

void draw() { //공통 기능  

   System.out.println("그리다"); 

 

상속받아서 사용할때랑 멤버필드로 포함했을때의 차이점 ??  

 

//포함관계  

class Point extends Shape{ 

int x; 

int y; 

Point(){ 

//this.x = 1;  

//this.y = 1; 

this(10,15); --> 중복되는 것 배제 효율적  

Point(int x,int y){ 

this.x = x; 

this.y = y; 

 

class Circle extends Shape{ //상속관계 

Point point; // 포함관계 (member field)  

int r; // 반지름 (특수성) 

 

Circle(){ 

//this.r = 10; 

//this.point = new Point(10,15); 

this(10,new Point(10,15)); --> 효율적인 코드  

}                           

 

Circle(int r,Point point){ //반지름 , 점의값을 임의로 지정가능  

this.r = r; 

this.point = point; // 주소값 할당  

 

//Circle circle = new Circle() 

//Circle circle = new Circle(15,new Point(10,15)) --> Point 클래스 타입으로 객체를 생성한다음 생성자로 초기화를 해줌  

 

public static void main(String[] args) { 

Circle c = new Circle(); 

System.out.println("반지름:"+c.r); 

System.out.println("부모:"+c.color); 

System.out.println("X좌표:"+c.point.x); 

System.out.println("Y좌표:"+c.point.y); 

c.draw(); 

 

Circle c1 = new Circle(20,new Point(2,5)); 

System.out.println("반지름:"+c1.r); 

System.out.println("부모:"+c1.color); 

System.out.println("X좌표:"+c1.point.x); 

System.out.println("Y좌표:"+c1.point.y); 

c1.draw(); 

Colored by Color Scripter

cs

'프로그래밍 언어' 카테고리의 다른 글

자바입출력 bufferedReader/Writer  (0) 2020.09.17
IO 입출력  (0) 2020.03.21
서버와 클라이언트 채팅  (0) 2019.09.29
소켓 네트워크 프로그래밍  (0) 2019.09.07
서버와 클라이언트  (0) 2019.09.07