Articles of OOP

Сгенерированный метод toString для включения членов из базового класса?

Я пытаюсь создать классы DTO (data-transfer-object) в Kotlin для вызова из приложения Java. Учитывая следующий код: BaseDto.kt package sandbox.KotlinDataObjects import org.apache.commons.lang3.builder.ToStringBuilder import java.sql.ResultSet import java.sql.SQLException /** * Base DTO * (JSON/XML serialization code removed for clarity) */ abstract class BaseDto( var id: Long = 0 ) { @Throws(SQLException::class) open protected fun fromResultSet(rs: ResultSet) { this.id […]

Модификаторы доступа Kotlin означают то же, что и в Java?

У Kotlin есть 3 ключевых слова для доступа: public , private и protected . Они имеют в виду то же самое, что и в Java, или существуют различия? Кроме того, internal такая же, как и package private ? Я продолжаю читать о «модулях» в Котлине, и я не уверен, что это просто еще одно слово […]

Переопределение одной и той же подписи из разных закладок

в c sharp, если у нас есть 2 интерфейса, с одним и тем же сигнатурным методом, мы можем реализовать их в одном классе следующим образом: interface A { void doStuff(); } interface B { void doStuff(); } class Test : A, B { void A.doStuff() { Console.WriteLine("A"); } void B.doStuff() { Console.WriteLine("A"); } } Если […]

Могу ли я обновить глубоко вложенный неизменный объект, не сообщая ему о его контексте?

Представим себе, что у меня есть вложенный неизменный объектный граф, вдоль этих строк (используя синтаксис Kotlin, но, надеюсь, это понятно): data class House(val bedroom: Bedroom, val bathroom: Bathroom, val kitchen: Kitchen) class Bedroom class Bathroom data class Kitchen(val oven: Oven, val kettle: Kettle) class Oven data class Kettle(val on: Boolean) var house = House(Bedroom(), Bathroom(), […]

Несоответствие типа Котлина при прохождении в параметре

Я переопределяю функцию в родительском классе, который принимает параметр типа Any ?. Я хочу Любить? чтобы быть экземпляром типа Venue, так что я могу вывести его id, однако я не могу переопределить функцию, используя getModelId(model: Venue?) потому что это не так, как это определено в суперклассе. Каков наилучший способ убедиться, что для этого случая использования […]

Типы соединений / интерфейсы расширения

У меня есть несколько data class с полями, которые используются в формах, и им нужно, чтобы метод возвращал true если какое-либо из полей было заполнено. Я не хочу переписывать это для всех классов, поэтому я делаю это так: data class Order(var consumer: String, var pdfs: List<URI>): Form { override val isEmpty(): Boolean get() = checkEmpty(consumer, […]

Решение основного наследования Котлина

Как создать новую SavingAccount с значениями init для owner и balance open class BankAccount(val owner: String = "Long John Silver", private var balance: Double = 0.00) { constructor (amount: Double) : this() { this.balance = amount } fun deposit(amount: Double){ this.balance += amount } fun withdraw(amount: Double){ this.balance -= amount } fun getBalance(): Double{ return […]

Является ли частное свойство «полем»?

Изучая свойства в Котлине, эта концепция для меня несколько нова, поэтому мне любопытно, правильно ли утверждать, что частное property является field (переменной экземпляра)?

Конструктор в Котлине

Недавно началось с Котлина Согласно документам Котлина, может быть один первичный конструктор и один или несколько вторичных конструкторов. Я не понимаю, почему я вижу эту ошибку Поскольку test класса не имеет первичного конструктора. Это прекрасно работает: open class test { } class test2 : test() { } И вот еще одна трудность, с которой я […]

Какова цель пустого класса в Котлине?

Я проходил через ссылочный документ Kotlin а потом увидел это. Объявление класса состоит из имени класса, заголовка класса (с указанием его параметров типа, основного конструктора и т. Д.) И тела класса, окруженного фигурными фигурными скобками. Как заголовок, так и корпус являются необязательными; если класс не имеет тела, фигурные скобки могут быть опущены. class Empty Теперь […]