#class #kotlin
Вопрос:
Я новичок в кодировании. Я пытаюсь понять, как работает код в Котлине. Сегодня я читал о
классе и наследовании. Теперь я пытаюсь понять несколько вещей из кода ниже:
- Почему нет переопределения для использования свойств класса в функции copyAddress?
- Как распечатать » результат «. В основной функции я не могу понять, какой параметр следует указывать
при вызове функции copyAddress?
Это мой код:
package Spice
class Address {
var name: String = "Holmes, Sherlock"
var street: String = "Baker"
var city: String = "London"
var state: String? = null
var zip: String = "123456"
}
fun copyAddress(address: Address): Address {
val result = Address()
result.name = address.name
result.street = address.street
return result
}
fun main(){
val a = copyAddress(address = Spice.Address())
print(a)
}
Комментарии:
1. 1. Поскольку все свойства
Address
являются общедоступными, любой, уAddress
кого есть экземпляр, может получить доступ к его свойствам.2. Я не совсем понимаю, почему вы заговорили о наследовании, поскольку в вашем коде нет наследования. В случае , если вы ссылаетесь на
: Address
aftercopyAddress
, это просто указание типа возвращаемой функции, т. Е. ЭтоcopyAddress
вернет anAddress
.
Ответ №1:
- Потому что «Адреса»
class
и свойств нетopen
. Это последний класс, поэтому вы не можете его наследовать.override
Ключевое слово используется в унаследованных классах(отinterface
open class
илиopen var
). Вот пример:open class HomeAddress{ open var streetName : String = "" } class Address:HomeAddress(){ override var streetName : String = "" } fun main(){ var address = Address() address.streetName = "Baker" println(address.streetName) }
fun copyAddress(address: Address): Address
Строка относится к вашей функции, возвращающей тип класса адреса. Я немного сокращаю ваш код.class Address { var streetName: String = "Baker" var name:String = "Holmes, Sherlock" } fun copyAddress(address: Address): Address { return address } fun main(){ val a = Address() val myAddress = copyAddress(a) println(myAddress.streetName) println(myAddress.name) }
Комментарии:
1. Спасибо. Я понял.