Skip to content

10장 composition and inheritance

kingori edited this page Oct 2, 2011 · 3 revisions

kingori

10.1

10장 예제는 text layout framework임.

combinator: elements를 엮어 새로운 element 를 생성하는 opertaor

10.2

abstract type은 class 앞에 keyword abstract를 붙임

abstract class Element {}

java와 달리 abstract method 앞에 abstract keyword가 필요없음. body가 없다면 abstract method 임. cf. concrete method

scala> class A { def abc: Int }
<console>:7: error: class A needs to be abstract, since method abc is not defined
   class A { def abc: Int }
         ^
scala> abstract class A { def abc: Int }
defined class A   

definition vs. declaration : signature를 명시했다면 선언(declaration), 내용이 정의되었다면 정의(definition). abstract method는 선언만 있다고 정의는 없는 경우.

10.3

  • parameterless method: () 도 명시하지 않은 method.
    • 매개변수를 갖지 않으며, 객체의 상태를 변경하지 않는 메서드의 경우에 권장하는 convention.
    • uniform access principle을 지원: 속성을 필드로 구현하건 메서드로 구현하건 클라이언트는 영향을 받아선 안된다. -> 즉, 마치 field처럼 보이는 method라는 것인가? val width = if( height ==0 ) 0 else contents(0).length //실상은 method인데 마치 field처럼 보임
  • empty-paren method: () 를 명시한 method
Clone this wiki locally