我是Kotlin的新人,我目前正在研究OOP的概念
我正在尝试使用此代码进行演员,但我遇到了错误:
open class Operations1(){
open fun sum(n1:Int , n2:Int):Int{
return n1+ n2
}
fun sub(n1:Int , n2:Int):Int{
return n1- n2
}
}
class multiOperations1():Operations(){
override fun sum(n1:Int , n2:Int):Int{
return n1+ n2 +5
}
fun mul(n1:Int , n2:Int):Int{
return n1* n2
}
fun div(n1:Int , n2:Int):Int{
return n1/ n2
}
}
fun main(args:Array<String>){
var oper = Operations()
var inlit = multiOperations1() as Operations1
println("Enter first number")
var n1:Int = readLine()!!.toInt()
println("Enter Second Number")
var n2:Int = readLine()!!.toInt()
var sum = inlit.sum(n1 , n2)
var sub = inlit.sub(n1 , n2)
println("Sum: " + sum)
println("Sub: " + sub)
}
代码的屏幕截图
错误:
答案 0 :(得分:2)
要实现这一目标,您可以简单地使用Gson并避免样板代码:
var operation= Operations(....)
val json = Gson().toJson(operation)
val multiOperations:MultiOperations =Gson().fromJson(json, MultiOperations::class.java)
答案 1 :(得分:1)
您似乎同时拥有Operations
和Operations1
类。您的multiOperations1
类继承自Operations
而不是Operations1
,因此您无法将其强制转换为Operations1
(除非Operations
是{的子类{1}})。
我假设你想从Operations1继承,就像这样:
Operations1
关于约定的注释:Kotlin中的类名通常遵循Java约定,并使用上部驼峰大小写,因此您应该将类命名为class multiOperations1(): Operations1() {
...
}
。
答案 2 :(得分:0)
你可以使用 -
var inlit = multiOperations1() as Operations
您可以将派生类强制转换为父类。在您的情况下,multiOperations1
类具有父类Operations
。
只是一个建议从大写字母开始你的类名multiOperations1
。