我读到Class和Abstract Class之间的主要区别是,无法实例化abstract class,
但是我可以为抽象类创建对象
public abstract class Earth {
abstract void sand();
void land() {
}
}
并使用新的关键字为抽象创建了对象
Earth mEarth = new Earth() {
@Override
void sand() {
}
};
我对此有一些疑问,但在Inet上没有适当的答案,
1)是用于实例类的新关键字吗?
2)是实例不过是对象?
3)是mEarth被称为对象(地球实例)吗?
现在我可以调用任何方法(作为回调或作为值返回)
mEarth.sand(); mEarth.land(); 使用地球对象
最佳答案
您不能创建抽象类:
new Earth(); // <- that's compile time error
但是,您可以像创建非抽象派生类那样
// New non-abstract (local) class that extends Earth
new Earth() {
// You have to override an abstract method
@Override
void sand() {
...
}
}
问题的答案:
new
关键字创建了新实例。 Earth
类的对象,而不仅仅是Object
mEarth
字段声明为Earth
,并且包含扩展类Earth
的对象,因此您可以调用Earth
的任何方法。