Latest web development tutorials

스칼라 형질 (기능)

스칼라 형질 (특성) 등가 자바 인터페이스 사실, 또한 인터페이스보다 강력하다.

인터페이스는 다른, 그것은 속성과 메서드의 정의를 얻을 수 있습니다.

정상적인 상황에서는 스칼라 클래스는 하나의 부모를 상속하지만, 형질 (기능), 다음의 결과로부터, 다중 상속 할 수있는 경우 다중 상속을 구현하는 것입니다 수 있습니다.

형질 정보 (기능) 클래스의 정의와 유사하지만, 다음과 같이 그키워드의 특성을 사용

trait Equal {
  def isEqual(x: Any): Boolean
  def isNotEqual(x: Any): Boolean = !isEqual(x)
}

ISEQUAL 및isNotEqual :두 가지방법에의해 구성 형질 (특성)위.ISEQUAL 방법은 구현 정의 방법이 아니다, 그것의 방법을 정의 isNotEqual. 서브 클래스는 상속 기능이 구현 될 수있는 방법은 구현되지 않습니다. 자바 추상 ​​클래스와 같은 사실 스칼라 형질 (기능)에 따라서.

다음의 예는 완전한 기능을 보여 :

/* 文件名:Test.scala
 * author:本教程
 * url:www.w3big.com
 */
trait Equal {
  def isEqual(x: Any): Boolean
  def isNotEqual(x: Any): Boolean = !isEqual(x)
}

class Point(xc: Int, yc: Int) extends Equal {
  var x: Int = xc
  var y: Int = yc
  def isEqual(obj: Any) =
    obj.isInstanceOf[Point] &&
    obj.asInstanceOf[Point].x == x
}

object Test {
   def main(args: Array[String]) {
      val p1 = new Point(2, 3)
      val p2 = new Point(2, 4)
      val p3 = new Point(3, 3)

      println(p1.isNotEqual(p2))
      println(p1.isNotEqual(p3))
      println(p1.isNotEqual(2))
   }
}

위의 코드의 구현, 출력은 :

$ scalac Test.scala 
$ scala Test
false
true
true

건설 오더 특성

기능은 또한 생성자를 포함 할 수 있으며, 초기화 필드의 구문에 의해 신체의 다른 기능 구성. 특징 구조에 혼합 물체에서이 문이 실행됩니다.

생성자의 실행 순서 :

  • 슈퍼 클래스의 생성자를 호출;
  • 클래스 생성자 실행하기 전에 슈퍼 클래스 생성자 후 특성화 생성자;
  • 특성은 왼쪽에서 오른쪽으로 구성되어 있습니다;
  • 부모 특성 중 각 기능은 처음 건설되었다;
  • 여러 기능 상위 특성 상위 특성은 반복하지 않는다 구조가 있다면
  • 모든 기능은 완성 된 서브 클래스가 구성되어 구성됩니다.

생성자 역 클래스의 선형 순서입니다. 선형화 슈퍼 종류 기술 사양 모든 종류의 형태를 설명한다.