moyaiori 2015. 7. 15. 12:08

오전 1교시는 상속 실습

7. 상속(8)

Shape -> Circle, lectangle 클래스만들어서 출력하기


- 다형성 (8.다형성과 객체 형변환.ppt)

자바에서는 다형성을 지원하기위해 클래스 형변환을 지원한다.

부모 자식 클래스간에서만 클래스 형변환이 가능하다.

배열로 다양한 객체를 관리할때 좋다.

하나의 배열(타입) 안에 다양한 자식클래스를 넣을수 있다.

up casting 의 제약사항 : 자신의 수퍼클래스만 접근이 가능하다. 밑으로는 접근이 불가하다.

오버라이딩된 변수나 메서드는 JVM에서 찾아서 호출한다.


down casting : 원하는 클래스를 가리키는 변수가 필요하다.

(자식클래스)부모클래스 형식으로 사용하여 새로운 변수를 지정한다.

자식클래스의 새롭게 추가된 맴버들을 접근하기위해 필요하다.


- instanceof 연산자

래퍼런스 변수 instanceof type(클래스명)


instansof 자식클래스를 비교할시에 부모클래스도 모두 true이다.


object클래스의 equals는 ==와 같다

주소값을 비교해서 같으면 true


String 클래스에서 equals로 오버라이딩된 메소드가 있다.

object 가 자동으로 String타입으로 형변환된다.


- equals

object 클래스의 메서브 euqlas은 ==와 같다

값이 아닌 주소를 비교한다. 


하지만 String의 equals는 object equals를 오버라이딩(재정의) 해서 사용한다


//위임형 비교

return toString().equals(obj.toString());

// 여기서 사용되는 equals는 String에서 오버라이딩된 equals이다.(내용비교)

// obj.toString() 은 현재 들어온 객체 타입이 account(obj의 값) 이기때문에 account에서 오버라이딩된 toString을 호출한다.


- 추상(Abstract)클래스

서브클래스들이 반드시 구현(재정의 : Overring)해야하는 메서드 선언을 위한"수직적 규약"을 위한 용도의 클래스, 수직적 규약이란 자식클래스에 대한 규약이다.


1개 이상의 추상 메서드를 가지는 클래스

클래스 명 앞에 abstract 라고 입력한다.


금요일 오전 필기 시험!!


- 인터페이스

인스턴스 생성 목적이 아니라 서로 다른 클래스간의 상호작용을 위한 "수평적 표준 규약(격)"을 위한 목적이다.


구현 클래스에서 "implements "인터페이스명" 으로 써준다.


타입선언은 가능하다(interface 명(형)으로) 선언할수있따.


자바에 다형성을 지원하는 기술 3가지

클래스 형변환

추상클래스

인터페이스