Day012 Concrete class(구상 클래스) + Abstract class(추상클래스) + interface

개발 Programming/JAVA|2009. 6. 24. 10:52
Abstract 클래스는 코드중복 최소화 설계, 하위 클래스거 별도로 구현해야 할 메소드는 오버라이드
다형성 측면에서도 융통성 있게 만들어짐.
인스턴스를 만들 수 없게 하고, 단지 하위 클래스들이 가져야 할 공통적인 규약만을 포함하도록(new 키워드 사용X)

클래스를 abstract로 지정하여 컴파일러에서 그 유형의 인스턴스를 만드는 코드를 허용하지 않도록 할 수 있다
하지만,  그 추상 유형(abstract type)을 레퍼런스로 사용할 수는 있다.  이렇게 레퍼런스로 사용하는 거시 바로 이런 ‘추상 클래스’ 만드는 핵심적인 이유 중의 하나이다.  다형적인 인자나 리턴 유형을 쓰기 위해, 또는 다형적인 배열을 만들기 위해 써야 한다.
추상메소드가 있는 클래스는 무조건 추상클래스로 선언해줘야 한다.

장점 :
 다형성인 측면에서 강력한 힘을 가진다(왜냐하면 그냥 구상클래스에서는 상속을 타고 올라가면서 그 함수를 찾아야 하지만 추상클래스를 상속 받아서 구현된 클래스는 반드시 추상 클래스를 재정의,구현 하고 있기 때문에 각각의 클래스들의 메소드가 다형성을 각각의 구현으로 다형성을 가지고 있기 때문이다.
인스턴스 생성을 뺀 나머지 클래스의 기능을 모두 사용 가능하다.


강제적으로  구현하게 만든다.!!
차후의 오류의 가능성을 줄여준다.

 
추상 메소드

단점 : 클래스의 상속 관계에서 분류에서 추상 클래스를 사용하였을 때 추상클래스 내에 있는 추상메소드는 모두 구현하고 있어야 한다.


추상 클래스는 유형의 개체를 저장하기 위한 배열객체를 만드는 것은 가능 !!!! 즉 인스턴스 생성을 뺀 나머지 클래스 기능을 모두 사용할 수 있다.


상속과 비교
사용의 예

상속과 is a 관계가 성립할 때  슈퍼클래스에 인스턴스가 필요가 없을 때
슈퍼클래스가 굳이 설명할 필요가 없고 하위 클래스가 설명을 하게 하고 싶을 때 사용


클래스는 다중상속이 안됀다

 그 이유는?



댓글()