본문 바로가기

Java/자바 기반 웹 개발자 과정 필기

[200312.14일차]

반응형

 

복습

 

 

부모클래스

 

자식클래스

 

 

 

main 클래스

출력

 

 

 

* 객체의 형변환

=> 부모가 자식 클래스에 잠시 접근할 수 있다.

 

타입을 잘보고 형변환을 하지 않으면 런타임오류가 발생한다.

Goat타입으로는 Chicken 타입으로 형변환할 수 없다. 부모=>자식은 되지만, 자식=>자식은 안된다.

 

 

 

 

해당 객체라면 실행

 

 

 

추상메소드, 추상클래스

 

* 다형성을 구현하다 보면,

부모클래스일 수록 개념적이고 추상적으로 메소를 구현하게 된다.

특정 기능이 어떻게 구현될지 애매하다.

bark를 보면 동물이 짖긴 짖는데 누가 어떻게 짖는지를 모른다.

=> 부모클래스에서 만들어둔 코드는 사용하지 않고, 자식에서 재정의해서 사용한다.

사실상 부모클래스에서는 코드를 낭비하고 있다.

 

 

 

 

문제점

=> 특정방법을 사용하지 않으면 객체화가 불가능하다.

=> 무명 클래스를 사용한다.

 

 

무명 클래스 (anonymous class) : 클래스 몸체는 정의되지만 이름이 없는 클래스

=> 몸통만 있는 클래스

 

 

 

무명클래스는 처음에 프로그램을 설계할 때 사용한다.

 

(재정의를 권하지 않는다.)

 

 

 

 

 

 

인터페이스(interface)

=> 클래스의 한 종류

=> 인터페이스를 상속 받을 때 extends -> implements

=> 추상 메소드들로만 이루어진다.

 

 

기본형태

 

 

 

 

 

인터페이스의 객체화

 

클래스상속은 메소드를 오버라이딩(재정의)을 해서 재사용을 하는 개념이고,

 

인터페이스는 설계의 개념,

여러 클래스에 필요한 기능들을 반드시 꼭 '구현을 해야되는 기능'들을 만들때 사용한다.

 

인터페이스를 implements 받은 클래스들을 객체화 해서 사용한다.

 

 

 

인터페이스에 만들어지는 멤버변수들은

staric final 형 변수가 된다.

=> 일반 변수들을 만들수가 없다.

 

 

 

 

 

 

추상화 적용 해보기

 

둘다 fight()라는 공통된 기능이 있다 => 부모 메소드를 만들어 사용한다.

 

 

 

=> 공통된 기능을 추상화해 부모 클래스에 넣는다.

 

 

=> 기능들을 메소드화 한다.

 

 

 

=> fight()형태가 같아졌으니 부모에 그냥 정의를 해주고, 자식클래스에서는 지워버려도 된다.

 

부모클래스에서 템플릿에 해당하는 메소드가 정의되고,

내부에 세부정인 기능에 대한 정의는 추상 메소드로 남겨둔채,

자식클래스에서 세부적인 기능을 구현해서 템플릿을 완성하는 방법을 템플릿 메소드 패턴이라고 한다.

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형