Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 抽象类的确切用途是什么?_Java_Oop_Abstract Class - Fatal编程技术网

Java 抽象类的确切用途是什么?

Java 抽象类的确切用途是什么?,java,oop,abstract-class,Java,Oop,Abstract Class,嗨,朋友们,我仍然无法找到我们使用抽象类的原因。 例如: public abstract class Test{ abstract void show(); } class Demo extends Test{ public void show(){ System.out.println("hi"); } public static void main(String a[]) { Demo obj = new Demo();

嗨,朋友们,我仍然无法找到我们使用抽象类的原因。
例如:

public abstract class Test{

   abstract void show();

}

class Demo extends Test{

   public void show(){
      System.out.println("hi");
   }

   public static void main(String a[]) {

       Demo obj = new  Demo();
       show();
       obj.show();
   }

}
我可以直接使用


抽象类在这里有什么用途?如果可能,如何在没有抽象类的情况下使用重写概念?

如果多个类中需要相同的功能,则应使用抽象类。因为抽象类可以包含方法实现,所以可以实现一次并在(多个)其他类中继承它。这样可以避免代码重复,并使其更易于维护


也就是说,在Java8中,您可以在接口中创建默认方法,这是更好的,因为一个类可以实现多个接口,但只能继承一次。这种方法还避免了其他方法

如果在多个类中需要相同的功能,则应使用抽象类。因为抽象类可以包含方法实现,所以可以实现一次并在(多个)其他类中继承它。这样可以避免代码重复,并使其更易于维护


也就是说,在Java8中,您可以在接口中创建默认方法,这是更好的,因为一个类可以实现多个接口,但只能继承一次。这种方法还避免了其他方法

当我们可能不知道一个方法如何和做什么,但我们确信一个类包含一个特定的方法时,我们使用一个抽象方法,在这种情况下,我们可以创建一个抽象方法,而不需要任何实现代码。稍后,当我们扩展方法并了解该方法必须如何工作时,我们可以根据当前对象或扩展类向其添加实现。

当我们可能不知道一个方法如何工作和做什么,但我们确信一个类包含一个特定的方法时,我们使用一个抽象方法,在这种情况下,我们可以创建一个抽象方法,而不需要任何实现代码。稍后,当我们扩展该方法并了解该方法必须如何工作时,我们可以根据当前对象或扩展类向其添加实现。

这应该会有所帮助。这应该会有所帮助。抽象类-和任何类一样-允许添加额外的字段/状态;默认方法没有。@user2864740 true-但我从未遇到过必须使用抽象类字段的情况。对我来说似乎是一个边缘案例。好的评论,谢谢!抽象类-和任何类一样-允许添加额外的字段/状态;默认方法没有。@user2864740 true-但我从未遇到过必须使用抽象类字段的情况。对我来说似乎是一个边缘案例。好的评论,谢谢!
class Demo {

    void show(){
       sop("hi");
    }

    public static void main(String a[]){
       Demo obj = new  Demo();
       obj.show();
    }
}