【发布时间】:2014-07-12 09:52:40
【问题描述】:
我读到Class和Abstract Class之间的主要区别是,抽象类不能被实例化,
但我可以为抽象类创建对象
public abstract class Earth {
abstract void sand();
void land() {
}
}
并使用新的关键字创建了对象,用于抽象
Earth mEarth = new Earth() {
@Override
void sand() {
}
};
我有一些问题在 Inet 上没有正确的答案,
1) 是否使用 new 关键字来实例化类?
2) 实例只是对象吗?
3) mEarth 是否被称为对象(地球的实例)?
现在我可以调用任何方法(作为回调或作为值返回) mEarth.sand(); mEarth.land(); 使用地球对象
【问题讨论】:
-
如果 Earth 是抽象类,你不能这样做
new Earth();。但是你可以创建一个派生类 -
我们不能像 new Earth();但我们可以像我上面提到的那样做!
-
您正在制作的是
Earth的匿名子类。不直接实例化Earth。 -
当您使用 {@Override} 时,您正在为 Earth 类创建一个新的匿名类。当您使用 Earth mEarth = new Earth() 时,您会发现无法创建抽象类。 new 关键字确实用于创建类实例。对象是什么取决于您对对象的定义。 mEarth 是 Object 的子类,因为您将创建的所有类都是 Object 的子类。 mEarth 是对地球实例的引用。地球本身是一个类,但这也是一个真实的对象。
标签: java oop object abstract-class