Котлин: Как вызвать свойства класса в основной функции и распечатать результат?

#class #kotlin

Вопрос:

Я новичок в кодировании. Я пытаюсь понять, как работает код в Котлине. Сегодня я читал о
классе и наследовании. Теперь я пытаюсь понять несколько вещей из кода ниже:

  1. Почему нет переопределения для использования свойств класса в функции copyAddress?
  2. Как распечатать » результат «. В основной функции я не могу понять, какой параметр следует указывать
    при вызове функции 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 after copyAddress , это просто указание типа возвращаемой функции, т. Е. Это copyAddress вернет an Address .

Ответ №1:

  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)
     }
     
  2. 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. Спасибо. Я понял.