Java 为什么我们要使用抽象类或方法?为什么不重写超类方法?

Java 为什么我们要使用抽象类或方法?为什么不重写超类方法?,java,abstract,Java,Abstract,//如果这可以通过重写来实现,为什么要使用抽象呢 abstract class A { abstract void callme(); } class B extends A { void callme() { System.out.println("this is callme."); } public static void main(String[] args) { B b=new B(); b.callme(); } } 抽象类主要用于绑定子类以给

//如果这可以通过重写来实现,为什么要使用抽象呢

    abstract class A
{
 abstract void callme(); 
}
class B extends A
{
 void callme()
 {
  System.out.println("this is callme."); 
 }
 public static void main(String[] args)
 {
  B b=new B();
  b.callme();
 }
}

抽象类主要用于绑定子类以给出其抽象方法的主体。 其中,与在非抽象类中一样,您没有限定子类以给出其方法体

在B类中,必须给出callme()的主体

何处为


在类Dog中,不强制提供myType()的主体

你的两个例子似乎不相关。抽象类通常用于抽象类提供的代码不是特定于子类实现的,而是包含在子类中实现的抽象方法。@JonSkeet,如是说。也许您应该阅读一些和post.注意,您不能使用抽象类创建对象
new A()
无效,但
new Animal()
无效valid@JonSkeet类A{public void callme(){……}}类B扩展了A{public void callme(){……}这是可能的,那么为什么要让类A呢abstract@muhammad:因为类A可能无法实现
callme
本身,如果它是一个一般的抽象概念。
 class Animal
{
 Animal myType()
 {
  return new Animal();
 }
}

class Dog extends Animal
{
 Dog myType()     //Legal override after Java5 onward
 {
  return new Dog();
 }
}