2016-10-24 3 views
0

TraitのすべてのメソッドをこのTraitに拡張されたクラスにインポートするのか、それとも使われているメソッドだけをインポートするのでしょうか?Scala:インポートされたTraitのすべてのメソッドまたは使用されているものだけですか?

依存性注入はありますか?

+0

2番目の質問を延長できますか?私はあなたが求めているものを手に入れません。 – talex

+0

私にいくつかのコードを投げてください – pamu

+0

「インポートされた」とは_compiler_を意味します - もちろん、すべてがインポートされていて、単に「使用された」ものではありません。それを使用する。 –

答えて

1

privateと記されているメソッドを除いて、他のすべての方法が拡張エンティティで利用可能になります。拡張エンティティは、オーバーライドしたり、実装されていないままにすることができます。この場合、このエンティティの子はそれに対処しなければなりません。依存性注入

に来

trait A { 
private def a: Int = 1 //not available 
protected def b: Int = 2 //available inside extending entity 
def d: Int = 3 //available everywhere 
} 

class B extends A {} 
val x = new B() 

x.a //error 

x.b //error 

x.d //prints 3 

AとBは、親/子関係を保持していない2つのインターフェイスまたは形質であると言うことができます。

エンティティを他のエンティティに挿入すると、そのエンティティのすべてのパブリックメソッドには他の人がアクセスできます

関連する問題