2016-10-24 10 views
0

Мне интересно, импортированы ли все методы Trait в класс, который расширяет этот код Trait или только те, которые были использованы?Scala: все методы импортированного Trait или только те, которые используются?

И с инъекцией зависимости?

+0

Можете ли вы рассказать вам второй вопрос. Я не понимаю, о чем вы спрашиваете. – talex

+0

Бросьте код на меня – pamu

+0

Похоже, что у вас есть некоторая терминология в замешательстве: «импортированные» средства доступны для _compiler_ - поэтому, конечно, все импортировано, а не только «используемые», вся цель импорта материала должна быть _able_ использовать его. –

ответ

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 

Приходя к инъекции зависимостей

Допустим, А и В два интерфейса или черты характера, которые не держат отношения родитель/ребенок.

Если вы вводите одну сущность в другую. К общедоступным методам этого объекта могут быть доступны другие