采访者问:我们可以实例化一个抽象类吗?我说,不,他告诉我 - 错,我们可以.
我对此有点争论.然后他告诉我自己在家里试试.
abstract class my {
public void mymethod() {
System.out.print("Abstract");
}
}
class poly {
public static void main(String a[]) {
my m = new my() {};
m.mymethod();
}
}
Run Code Online (Sandbox Code Playgroud)
在这里,我正在创建我的类的实例并调用抽象类的方法.有人可以向我解释一下吗?在我的采访中我真的错了吗?
我可以在不添加抽象方法的情况下定义抽象类吗?
我在谷歌搜索的东西,我得到了一个类似的代码
public static abstract class LocationResult{
public abstract void gotLocation(Location location);
}
Run Code Online (Sandbox Code Playgroud)
这是一个嵌套类,但想知道它是如何可访问的?
我想出了以下问题:
我的MainActivity代码:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// ...
// ERROR: Cannot create instance of an abstract class
var db = DataBase().getDataBase(this)
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
房间数据库:
@Database(entities = arrayOf(DataBaseUser::class), version = 1)
abstract class DataBase : RoomDatabase() {
val DB_NAME : String = "DataBaseUser"
private lateinit var INSTANCE : DataBase
fun getDataBase(context: Context): DataBase {
if (INSTANCE == null){
INSTANCE = Room.databaseBuilder(context.applicationContext,DataBase::class.java,DB_NAME).build()
}
return INSTANCE
}
abstract fun getUserDao(): DataBaseUserDao
}
Run Code Online (Sandbox Code Playgroud)
我无法在Kotlin中实例化该类.在Java中,我这样做:
db …Run Code Online (Sandbox Code Playgroud) 我正在关注一个有不同状态要处理的java游戏编程教程.现在我们只是没有对它们做任何事情,只是在我们的主类中实例化它们.定义状态的超类如下:
package com.arjav.tilegame.states;
import java.awt.Graphics;
import com.arjav.tilegame.Game;
public abstract class State {
protected Game game ;
private static State currentState = null ;
public State(Game game) {
this.game = game ;
}
public static void setState(State state){
currentState = state ;
}
public static State getState(){
return currentState ;
}
public abstract void tick();
public abstract void render(Graphics g);
}
Run Code Online (Sandbox Code Playgroud)
我遇到问题的主要课程:
package com.arjav.tilegame;
import java.awt.Graphics;
import java.awt.image.BufferStrategy;
import com.arjav.tilegame.display.Display;
import com.arjav.tilegame.gfx.Assets;
import com.arjav.tilegame.states.GameState;
import com.arjav.tilegame.states.MenuState;
import com.arjav.tilegame.states.State;
public class Game …Run Code Online (Sandbox Code Playgroud)