forked from codeport/scala
-
Notifications
You must be signed in to change notification settings - Fork 0
10장 composition and inheritance
kingori edited this page Oct 2, 2011
·
3 revisions
kingori
10장 예제는 text layout framework임.
combinator: elements를 엮어 새로운 element 를 생성하는 opertaor
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는 선언만 있다고 정의는 없는 경우.
- 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