java可以创建抽象类的对象吗?若否,原因为何?
我有一个抽象类B,有两个抽象方法
public abstract class B
{
public abstract void C();
public abstract void D();
}
我试图通过使用
B objB = new B(){
@Override
public void C() {
}
@Override
public void D() {
}};
ObjB
是抽象类的实例吗?我还尝试使用instanceof
操作符作为System.out.println(objB instanceof B);
,它返回我true
如果以上不是抽象类的对象,那么为什么上面的语句返回true
# 1 楼答案
不,不能立即实例化
abstract
类,原因是:它是abstract
为了创建这样一个类的实例,必须创建一个子类,该子类为该类的所有抽象成员提供实现。 即使没有添加任何抽象方法,这仍然是正确的
这并不意味着“此变量属于该类型”,而是指此变量属于该类型,或者是从该类型继承的类型的实例。因此,在Java中的任何对象上: ^如果myObject被实例化,{}将返回true,无论myObject的实际类型如何
在不创建具体且命名的子类的情况下,最接近实例化抽象类的方法是创建匿名实现:
正如您所做的那样,上面的块不是抽象类的直接实例化
这是一个新类的创建,您没有提供该类的名称,以及该类的实例化