在java/kotlin中从父抽象类数组调用子类函数
我有这个游戏对象的数组列表。我循环遍历arraylist,如果对象的类型是door(游戏对象的子类之一),并且如果其他条件匹配,我想从door类调用一个函数,该类仅在该类中。这可能吗?我正在使用Kotlin,但如果您只懂java,我可能会移植它。您可以将其与智能强制转换结合使用。在java中,您可以编写如下代码:在java/kotlin中从父抽象类数组调用子类函数,java,kotlin,abstract-class,abstract,Java,Kotlin,Abstract Class,Abstract,我有这个游戏对象的数组列表。我循环遍历arraylist,如果对象的类型是door(游戏对象的子类之一),并且如果其他条件匹配,我想从door类调用一个函数,该类仅在该类中。这可能吗?我正在使用Kotlin,但如果您只懂java,我可能会移植它。您可以将其与智能强制转换结合使用。在java中,您可以编写如下代码: for (GameObject gameObject: GameObjects) { if(gameObject instanceof Door ) { // you can
for (GameObject gameObject: GameObjects) {
if(gameObject instanceof Door ) { // you can add your another condition in this if itself
// your implementation for the door object will come here
}
}
您可以这样使用:
//Kotlin 1.1
interface GameObject {
fun age():Int
}
class GameObjectDoor(var age: Int) : GameObject{
override fun age():Int = age;
override fun toString():String = "{age=$age}";
}
fun main(args: Array<String>) {
val gameObjects:Array<GameObject> = arrayOf(
GameObjectDoor(1),
GameObjectDoor(2),
GameObjectDoor(3));
for (item: GameObject in gameObjects) {
when (item) {
is GameObjectDoor -> {
var door = item as GameObjectDoor
println(door)
//do thomething with door
}
//is SomeOtherClass -> {do something}
}
}
}
//Kotlin 1.1
界面游戏对象{
乐趣年龄():Int
}
类GameObjectDoor(变量年龄:Int):GameObject{
覆盖乐趣年龄():Int=age;
重写fun-toString():String=“{age=$age}”;
}
趣味主线(args:Array){
val gameObjects:Array=arrayOf(
门(1),
门(2),
(三);;
用于(项目:gameObjects中的GameObject){
何时(项目){
是GameObjectDoor->{
var door=作为GameObjectDoor的项目
印刷品(门)
//你要把门关上吗
}
//是其他类->{do something}
}
}
}
中的是指是?而with
根本不是运算符。是的,它不是中的,而是中的is