Articles of наследование

Свойство суперкласса не инициализировано в классе Derived

У меня есть следующий код Котлина: import java.util.* import kotlin.collections.HashSet open class Graph(open val n: Int) { val graph = List<MutableSet<Int>>(n) {HashSet<Int>()} open fun addEdge(u: Int, v: Int) { graph[u].add(v) graph[v].add(u) } val numEdges: Int get() { return graph.asSequence() .map { it.size } .reduce { x, y -> x + y } } fun edgeSet() […]

Как использовать простое наследование для класса данных?

В java, abstract class NumericValue{ private String a; private String b; public String getA() { return a; } public void setA(String a) { this.a = a; } public String getB() { return b; } public void setB(String b) { this.b = b; } @Override public boolean equals(Object o) { if (this == o) return true; […]

Быстрый способ инициализации дочернего класса Kotlin с свойствами экземпляра родительского класса

Я использую библиотеку Java, которая определяет класс модели JSON с именем A Этот класс содержит много свойств, например, 26 свойств String названных от a до z и не имеет для них конструктора. Я хотел бы расширить этот класс в Kotlin с новым свойством JSON, lateinit var aa: String (производный класс будет B ) и иметь […]

Наследование класса данных Kotlin + метод копирования

По личному опыту и обсуждению я понимаю, что, когда data class наследуется от другого класса, унаследованные поля класса, не включены в функцию copy класса данных. Меня интересуют, какие варианты подходят для решения этой проблемы. В частности, у меня есть JPA @MappedSuperClass для моих сущностей JPA, которые являются data class . В суперклассе я установил идентификатор […]

Наследование Котлина

В настоящее время я участвую в разделении своего грязного кода на парадигму DDD (примечание, обучение). IEntity ( IEntity , IUser ) – это доменный слой, состоящий из интерфейса, который затем реализован на уровне данных ( BaseEntity , User ). Доступ к данным осуществляется через шаблон репозитория. Но, как я определил для IUserRepository для возврата IUser […]

данных и открытой несовместимости, какая у меня альтернатива?

Я делаю kotlin порт gli, и я застрял сейчас На самом деле у меня есть следующее open class Texture расширенный несколькими классами, такими как Texture2d Теперь Texture обладает некоторыми свойствами protected val storage: StorageLinear? protected val target: Target protected val format: Format protected val baseLayer: Int protected val maxLayer: Int protected val baseFace: Int protected […]

Инициализировать поле абстрактного класса в конструкторе ребенка

У меня есть абстрактный класс A с некоторым полем public abstract class A { var name: String = "Empty name" } и хотите наследовать его public class B(name: String) : A() { init { this.name = name } } Есть ли способ не создавать блок init и выполнять однострочный инициализатор name типа class B(::name: String) […]

Kotlin переопределяет забаву с подтипом

У меня возникли проблемы с наследованием интерфейса, содержащего метод / fun базового типа, который я бы хотел переопределить как подтип в классе, реализующем его. Пока у меня есть интерфейс interface IModel { fun convert(dataModel: BaseDataModel) } И класс, реализующий это: class SettingsModel: IModel { override fun convert(dataModel: BaseDataModel) { // Conversion of models here } […]

Kotlin: Как наследовать свойство в классе данных

У меня есть абстрактный класс токена, объявленный следующим образом: abstract class Token(var index: Int = 0) { open fun merge(toMerge: Token): Token? { return null } } Я хочу наследовать свойство index в классе данных, например: data class CloseLoop(index: Int, var openLoopIndex: Int = 0) : Token(index) Но это дает мне ошибку. Data class primary […]

Параметры абстрактного класса и лямбда

Поскольку kotlin имеет такую ​​хорошую поддержку лямбда, я начал использовать lambdas в качестве параметров конструктора для abstract классов вместо объявления abstract val/fun . По-моему, это более краткий, особенно потому, что тип val get get. Каковы недостатки этого? abstract class AbstractListScreen<T> ( val data: Set<T>, val filterators: (T) -> Set<String> ) { fun open() { /* […]