2013년 10월 23일 수요일

[JAVA객체지향,자바강좌]자바,다형성,오버로딩,오버라이딩, 캡슐화, Late binding

[JAVA객체지향,자바강좌]자바,다형성,오버로딩,오버라이딩, 캡슐화, Late binding 

  
1. 다형성(Polymorphism)
 
상속을 받은 것을 그대로 사용하지 않고 입맛에 맞게 바꾸어 줄 수 있도록 하는 것
다형성을 위해 자바에서는 메소드 overriding 과 메소드 overloading을 제공 한다.
상속계층 상에서 어떤 객체의 어느 메소드를 호출할 것인지를 결정하는 객체의 능력을 다형성 이라 한다.
사인곡선을 그리는 함수가 있다고 할 때 사용자는 파라미터로 radian이나 degree값을 넣게 되지만 둘 다 처리할 수 있다. 이것은 sine(int degrees)나 sine(float Radians)와 같이 동일 이름의 함수가 다른 파라미터로 두 번 선언되었기 때문이다.
오버로딩 or 오버라이딩을 통해 구현
 
2. 오버로딩(Overloading)
 
동일한 함수의 이름 사용 가능, 같은 클래스 내에 같은 이름의 생성자나 메소드를 사용하는 행위,매개변수의 개수와 타입이 달라야 한다

3. 오버라이딩
 
상위 클래스에서 정의된 함수를 하위 클래스에서 재 정의, 기존 클래스의 메소드 구현 부분만 약간 변화시켜 새로운 클래스를 생성할 수 있다. 매개변수의 개수와 타입이 같아야 한다.
상위 클래스로부터 메소드를 상속받을 때, 서브클래스 내에 같은 이름의 메소드가 있는 경우에?Signature가 다르면 중복(overloading)이 되고 Signature가 같으면 재정의(overriding)가 된다

4. Template : 타입을 인자로 하여 새로운 타입을 생성
 
5. 캡슐화(encapsulation)
 
객체는 자신이 수행하는 모든 행동과 속성을 다른 객체와 외부 세계에는 보이지 않는다
객체 자신의 Operation을 수행하고 결과를 내놓지만 그 Operation의 동작 원리는 숨기는 것이다.
높은 모듈성과 정보은닉을 제공
참고로 Late binding이란?
Virtual Method Invocation
 변수의 타입이 아닌 실제 메모리 영역을  차지하고 있는 변수가 참조하는 객체를  찾아 그메소드를 호출하는 것, 물론 변수의 경우 해당 사항 없다.(shadow variable, 가리기)

댓글 없음:

댓글 쓰기