Мне интересно, импортированы ли все методы Trait
в класс, который расширяет этот код Trait
или только те, которые были использованы?Scala: все методы импортированного Trait или только те, которые используются?
И с инъекцией зависимости?
Мне интересно, импортированы ли все методы Trait
в класс, который расширяет этот код Trait
или только те, которые были использованы?Scala: все методы импортированного Trait или только те, которые используются?
И с инъекцией зависимости?
За исключением методов, которые обозначены 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
Приходя к инъекции зависимостей
Допустим, А и В два интерфейса или черты характера, которые не держат отношения родитель/ребенок.
Если вы вводите одну сущность в другую. К общедоступным методам этого объекта могут быть доступны другие
Можете ли вы рассказать вам второй вопрос. Я не понимаю, о чем вы спрашиваете. – talex
Бросьте код на меня – pamu
Похоже, что у вас есть некоторая терминология в замешательстве: «импортированные» средства доступны для _compiler_ - поэтому, конечно, все импортировано, а не только «используемые», вся цель импорта материала должна быть _able_ использовать его. –