Java 请解释抽象类和具体类之间的区别?

Java 请解释抽象类和具体类之间的区别?,java,abstract-class,Java,Abstract Class,我有一个抽象类,包含两个未实现(抽象)的方法,一个实现的方法和一个静态方法,如下代码所示 public abstract class AbstractClass1 { static void test(){ System.out.println("111"); } public abstract void test2(); public abstract void test3(); public void test4(){ System.out.println(

我有一个抽象类,包含两个未实现(抽象)的方法,一个实现的方法和一个静态方法,如下代码所示

public abstract class AbstractClass1 {
  static void test(){
    System.out.println("111");

 }
 public abstract void test2();

 public abstract void test3();

 public void test4(){
    System.out.println("222");
 }

}
我在其他一些抽象类中扩展这个类,如下面的代码

public abstract class AbstractClassImplementation 
          extends  AbstractClass1 {

  public static void main(String[] args) {
    System.out.println("java abstract doubt");
    }
}
我的疑问是,包含抽象方法的AbstractClass1类是否意味着我们必须在子类中扩展它时重写它;但是,如果子类是抽象的,那么这里不会显示错误

假设我的子类不是抽象的;这一次,我必须重写“AbstractClass1”类中可用的所有未实现的方法,请参见下面的示例

 public  class AbstractClassImplementation extends AbstractClass1{

  public static void main(String[] args) {
    System.out.println("java abstract doubt");
 }

 @Override
 public void test2() {
    System.out.println("overrided here");

 }

 @Override
 public void test3() {
    System.out.println("overrided here");

 }
}

有人能解释一下吗?

AbstractClassImplementation
本身就是
abstract
,因此不必覆盖所有
abstract
方法。只有一个具体的(非
抽象的
)类必须实现所有的
抽象的
方法。

因为您的子类也是抽象的(不能初始化),所以您不必实现这些方法,但是在这种情况下,子类(如果不是抽象的话)将必须实现这些抽象方法

无需检查
AbstractClass2
中抽象方法的实现,因为对象不能实例化为
AbstractClass2


AbstractClass2
派生的任何具体类都必须实现
AbstractClass1
AbstractClass2
中的所有抽象方法。子类不需要实现抽象超类的方法。所需要的只是任何具体类(您可以初始化的类)必须从其所有超类(包括接口)实现所有尚未实现的方法。其他类不需要实现它们。

因为在第二个代码段中,AbstractClassImplementation本身是抽象的,所以它没有显示任何错误

以下是我们对此的看法

当抽象类被子类化时,子类通常提供 父类中所有抽象方法的实现。 但是,如果没有,则还必须声明子类 抽象的


抽象类不需要提供所有的实现,具体类需要为所有类提供一个实现。如果一个抽象类扩展了一个抽象类,它仍然不必实现所有的方法。