> Java > java지도 시간 > 본문

Java의 일반적인 기술인 믹스인을 사용하여 클래스 구성을 구현하는 방법

WBOY
풀어 주다: 2023-05-09 22:34:26
앞으로
926명이 탐색했습니다.

결합된 클래스에서 특성이 사용되는 경우 이를 믹스인이라고 합니다.

<p><code>abstract class A {</code><code>  val message: String</code><code>}</code><code>class B extends A {</code><code>  val message = "I'm an instance of class B"</code><code>}</code><code>trait C extends A {</code><code>  def loudMessage = message.toUpperCase()</code><code>}</code><code>class D extends B with C</code><code><br></code><code>val d = new D</code><code>println(d.message)  // I'm an instance of class B</code><code>println(d.loudMessage)  // I'M AN INSTANCE OF CLASS B</code></p>
로그인 후 복사

카테고리 D 부모 클래스가 있습니다 B 그리고 믹스인 C . 클래스는 하나의 상위 클래스만 가질 수 있지만 여러 믹스인을 가질 수 있습니다(키워드 사용). extend 그리고 with ). 믹스인은 상위 클래스와 동일한 상위 클래스를 가질 수 있습니다.

이제 추상 클래스가 사용되는 좀 더 흥미로운 예를 살펴보겠습니다.

abstract class AbsIterator {  type T  def hasNext: Boolean  def next(): T}
로그인 후 복사

이 클래스에는 추상 유형이 있습니다. T 표준 반복자 방법.

다음으로 구체적인 클래스(모든 추상 멤버)를 구현하겠습니다. T , hasNext 그리고 next 실현될 것입니다):

   
     
   
   
   abstract class AbsIterator {
      
    
      type T
      
    
      def hasNext: Boolean
      
    
      def next(): T
      
    
    }
로그인 후 복사

StringIteratorString 문자열을 반복하는 데 사용할 수 있는 유형 매개변수의 생성자입니다. (예: 문자열에 특정 문자가 포함되어 있는지 확인하기 위해):

이제 다음을 상속하는 특성을 만듭니다. AbsIterator .

   
     
   
   
   trait RichIterator extends AbsIterator {
      
    
      def foreach(f: T => Unit): Unit = while (hasNext) f(next())
      
    
    }
로그인 후 복사

이 특성이 구현되었습니다. foreach 방법 - 반복할 요소가 아직 있는 한( while (hasNext) ), 항상 다음 요소( next() ) 전달된 함수를 호출합니다. f: T => Unit . 왜냐하면 RichIterator 이는 특성이므로 구현할 필요가 없습니다. AbsIterator 의 추상 멤버입니다.

이제 우리는 StringIterator 그리고 RichIterator 의 함수는 클래스로 결합됩니다.

   
     
   
   
   object StringIteratorTest extends App {
      
    
      class RichStringIter extends StringIterator("Scala") with RichIterator
      
    
      val richStringIter = new RichStringIter
      
    
      richStringIter foreach println
      
    
    }
로그인 후 복사

새 수업 RichStringIter 부모 클래스가 있습니다 StringIterator 그리고 믹스인 RichIterator . 단일 상속을 사용하면 이러한 유연성이 없습니다.

위 내용은 Java의 일반적인 기술인 믹스인을 사용하여 클래스 구성을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿