抽象子类在Java中是如何工作的?
我们可以有一个具体的超类,然后是一个抽象的子类吗?有人能解释一下这是怎么回事吗抽象子类在Java中是如何工作的?,java,abstract-class,Java,Abstract Class,我们可以有一个具体的超类,然后是一个抽象的子类吗?有人能解释一下这是怎么回事吗 谢谢这已经在任何地方发生了,因为所有类都直接或间接地继承自对象。例如,AbstractCollection是一个从具体类Object继承的抽象类 这没有什么特别的。抽象类的具体子类仍然必须实现抽象方法。这已经到处发生,因为所有类都直接或间接地从对象继承。例如,AbstractCollection是一个从具体类Object继承的抽象类 这没有什么特别的。抽象类的具体子类仍然必须实现抽象方法。你可以这样做是的。类抽象的唯
谢谢这已经在任何地方发生了,因为所有类都直接或间接地继承自
对象
。例如,AbstractCollection
是一个从具体类Object
继承的抽象类
这没有什么特别的。抽象类的具体子类仍然必须实现抽象方法。这已经到处发生,因为所有类都直接或间接地从
对象继承。例如,AbstractCollection
是一个从具体类Object
继承的抽象类
这没有什么特别的。抽象类的具体子类仍然必须实现抽象方法。你可以这样做是的。类抽象的唯一限制是:
继承时,必须实现抽象方法,或者继承的类也必须是抽象的
它不能被实例化
由于抽象类可以实现方法,因此在抽象类中定义方法时,可以使用非抽象超类的方法。此外,从抽象类继承的人从非抽象超类获得方法,如下所示:
汽车继承抽象汽车继承法拉利
然后法拉利将获得车辆的实际实施方法。你可以拥有它是的。类抽象的唯一限制是:
继承时,必须实现抽象方法,或者继承的类也必须是抽象的
它不能被实例化
由于抽象类可以实现方法,因此在抽象类中定义方法时,可以使用非抽象超类的方法。此外,从抽象类继承的人从非抽象超类获得方法,如下所示:
汽车继承抽象汽车继承法拉利
然后法拉利将得到车辆的实际实现方法。是的,你可以,只要你不扩展这个类,你就不必实现任何方法
Abstract class AbstractClass extends ConcreteClass{
public abstract void method();
}
class ConcreteClass {
public void doSomething(){
}
}
在AbstractClass中,您不必实现doSomething方法,在ConcreteClass中,您不必实现方法()。
如果你自己试试就更好了,我建议你读这本书
谢谢,
Khalil。是的,你可以,只要你不扩展这个类,你就不必实现任何方法
Abstract class AbstractClass extends ConcreteClass{
public abstract void method();
}
class ConcreteClass {
public void doSomething(){
}
}
在AbstractClass中,您不必实现doSomething方法,在ConcreteClass中,您不必实现方法()。
如果你自己试试就更好了,我建议你读这本书
谢谢,
Khalil.您可以这样做,前提是您扩展的具体类不是最终类。和所有抽象类一样,它们不能被实例化
例如,如果您希望您的继承者重新实现某些方法。。。说:
public abstract class MustHaveEqualsAndHashCode()
{
@Override
public abstract int hashCode();
@Override
public abstract boolean equals(Object obj);
}
但是请注意,这是非常罕见的。大多数情况下,可以用合成来代替它。如果扩展的具体类不是最终类,则可以这样做。和所有抽象类一样,它们不能被实例化
例如,如果您希望您的继承者重新实现某些方法。。。说:
public abstract class MustHaveEqualsAndHashCode()
{
@Override
public abstract int hashCode();
@Override
public abstract boolean equals(Object obj);
}
但是请注意,这是非常罕见的。大多数情况下,它可以被合成物代替。为什么不试试呢?我不明白为什么这不可能。您可以创建一个类并扩展它,然后将子类命名为抽象类。用这两种语言编写一些system.out.println语句。决定可以创建哪个类实例,并检查输出内容。如果你有疑问,请尽管问,我们会帮助你,我们可以,但不应该。@Bheshgurhung:真的吗?鉴于java.lang.Object
是一个具体的类,我看不出如何避免它……为什么不试试呢?我不明白为什么这不可能。您可以创建一个类并扩展它,然后将子类命名为抽象类。用这两种语言编写一些system.out.println语句。决定可以创建哪个类实例,并检查输出内容。如果你有疑问,请尽管问,我们会帮助你,我们可以,但不应该。@Bheshgurhung:真的吗?考虑到java.lang.Object
是一个具体的类,我看不出如何避免它。。。