San*_*p P 3 java oop abstract-class object
我读到Class和Abstract Class之间的主要区别是,抽象类无法实例化,
但我可以为抽象类创建对象
public abstract class Earth {
abstract void sand();
void land() {
}
}
Run Code Online (Sandbox Code Playgroud)
并使用新的关键词我创建了对象,用于抽象
Earth mEarth = new Earth() {
@Override
void sand() {
}
};
Run Code Online (Sandbox Code Playgroud)
我有一些问题在Inet上没有正确答案,
1)是新关键字用于实例类?
2)实例只是对象吗?
3)mEarth被称为对象(地球的实例)?
现在我可以调用任何方法(作为回调或值返回) mEarth.sand(); mEarth.land(); 使用地球物体
您无法创建抽象类:
new Earth(); // <- that's compile time error
Run Code Online (Sandbox Code Playgroud)
但是,您可以像创建非抽象派生类一样创建
// New non-abstract (local) class that extends Earth
new Earth() {
// You have to override an abstract method
@Override
void sand() {
...
}
}
Run Code Online (Sandbox Code Playgroud)
问题的答案:
new关键字创建新实例.Earth类的对象,而不仅仅是ObjectmEarth字段声明为Earth并包含一个扩展类的对象Earth,因此您可以调用任何方法Earth.