상속 - 기존에 있는 객체(부품)를 가져다 사용하기 위한 작업

* 재사용 - 컴파일된 바이너리를 다시 사용 // 소스 코드가 없는 상황에서 jar 파일을 import 시켜 사용

is a -


has a - 'a' 실존하는 객체를 부품(멤버)로써 가진다.

   상속되는 시점에 따라

     - composition has a - 내가 생성될 때 부품이 같이 생성된다.

     - association has a - 주입(인젝션)이 이뤄질때 생성된다.

                         - setter, constructor

     - aggregation has a - 1대 다로 has a 관계를 갖는다.



Is a 상속


<재사용을 극대화 하는 방법>

기존 재사용의 문제

-그대로 가져다가 사용

-만약 조금이라도 다르면 사용하지 못함


Is a 상속은 기존의 부품을 수정 또는 확장해서 사용 할 수 있는 방법이다.


- 클래스를 만들때 다음에 다시 사용 하기 좋도록(Is a 상속이 가능하도록) 만드는 것이 중요하다


frame work - 틀을 가져다가 고쳐 쓰는것




추상화 .

- 여러가지 사물이나 개념에서 “공통”되는 특성이나 속성 따위를 추출하여 파악하는 작용.- 네이버 사전

-공통분모를 만드는 과정



추상화한 클래스는 재사용을 위한 클래스.

단. has a 재사용이 불가능하다.(완전한 클래스가 아니기 때문에)

is a 재사용만 가능하다.


동일한 타입의 부품을 만들어야 할 경우에 추상화를 생각해 볼 수 있다.




-------------------------------------------------------┐

[비행기] <-        |

   △       |

       |

[적기] [아군기] [유람기]

동일한 행동을 한다.

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



추상화된 클래스 또는 부모 클래스가 있을 경우 참조 방법에 모호함.



A a = new A();

A a = new B();

B b = new A(); <- 이건 안됨

B b = new B();


*재사용 되는 모든 부모*는 추상호된 클래스 *특징*을 갖는다.

왜냐하면 큰 범주에서 보면 공통분모가 되니깐

그렇다고 추상 클래스로 만들어진 것(집중화를 위해 만들어진 것)을 의미하지는 않는다.

단. 추상 클래스는 미완성 추상 클래스(집중화를 위해 만들어진 클래스)

와 완전 추상 클래스(기존의 재사용되는 클래스)로 나눌 수 있다.


기존의 클래스와 내가 부모자식 관계가 된다면 참조방법이 다양해 진다.


<- 구체화 클래스     추 상 클래스 ->

6강의장 학생 클래스, 학생 클래스, 사람 클래스 , 동물 클래스, 포유류 클래스, 생물 클래스


<필요한 클래스를 지목 =  만족하는 객체를 지목>

       사람 기선 = new 사람()

       6강의장학생 기선 = new 6강의장학생()

   사람 아무나 = new 6강의장핵생()

   사람 아무나 = new 7강의장학생()


문제

?? 기선 = new 6강의장학생()

위에서 6강의장학생 객체를 참조 할 수 있는 클래스의 개수는? (다 가능)


문제


동물 솔이 = new ??();

위의 식에서 솔이라는 이름으로 참조 할수 있는 개체의 종류는 총 몇개? (4개 동물,사람,학생,6강의장)



프로그래밍, 구조적 프로그래밍, 객체지향 프로그래밍.

재사용은 이미 만들어진것을 다시 사용 하는 것(소스 코드 재사용X)


객체지향 - 캡슐화 -> 상속 -> 다형성




다형성->추상화



오버 라이드! 한것 우선으로 호출된다



정적 바인딩, 동적 바인딩


자바는 동적 바인딩을 사용한다.


객체가 전달 되면서 함수목록을 제출???


객체들은 자기 주소를 가지고 간다.





다형성 - 다양한 용도로 써먹을 수 있는 성질

어떤 클래스를 다양하게 써먹을 수 있도록 작성할 수 있는 능력을 갖는데 있다.



인터페이스





행위는 같지만 근본이 다른놈?


참조는 공간만 참조.

String 클래스(모든 클래스는 object이다.)


자바는 완전한 객체지향이다.

(Boxing과 UnBoxing)


Integer x = 3; => Integer x = new Integer(3);

일케 쓰면      컴파일러가   일케 만들어준다.


값을 참조할수 있도록 박싱(뤱(wrap)픵 yoyo )

요즘은 오브젝트에 그냥 값만 넣어도 알아서 만들어줌 ( 오토 빡싱)


Object x= 3;   => Object x = new Integer(3);

int y = x;(초창기엔 에러가 났는데 요즘은 안난다 오토 언빡싱)


Object x= 3;   => Object x = new Integer(3);

add(x,4);  x 에 참조가 아닌 값이 전달됨.

Boxing에 사용되는 Wrapper 클래스


Object ──── ① Number : Byte, Short, Long,Integer등등

                      ② String


int a = 3.intValue(); ---> 앙대요  < 요게 안대거

new Integer(3).intValue();---->되요

객체로 만들어줘서 나오는거        that’s yes yes ㅎㅇ

int b = “hello”.length(); -->되요


String 객체의 ‘+ (덧셈)‘ 은 미리 연산자 오버로딩이 된 메소드이다.


+ Recent posts