抽象方法的使用和 类 不清楚

Usage of abstract methods and classes unclear

我正在学习面向对象编程的概念。其中之一是抽象。我知道任何包含抽象方法的 class 也应该是抽象的,并且抽象 class 不能被实例化。要使用抽象 class 我必须从另一个继承它。

到目前为止一切顺利。让我们看下面的代码:

public abstract class Games {

   public abstract void start();

   public void stop(){
       System.out.println("Stopping game in abstract class");
   }
}

class GameA extends Games{
   public void start(){
       System.out.println("Starting Game A");
   }
}

class GameB extends Games{

   public void start(){
       System.out.println("Starting Game B");
   }
}

然后我们有一个 class 和 main 方法:

public class AbstractExample {

   public static void main(String[] args){
       Games A = new GameA();
       Games B = new GameB();

       A.start();
       A.stop();

       B.start();
       B.stop();
   }
}

但我本可以在 class Games 中写下以下内容:

public void start(){
   System.out.print("");
}

那么它就不必是abstract,输出是一样的,我什至可以实例化Games class。那么制作抽象方法和classes的关键是什么?

对,所以在某种意义上抽象class/接口是需要你提供自己的合约实现的合约。例如,您正在编写一个可以写入文件、数据库等的日志记录库。考虑一下您将如何强制任何人实现持久保存到底层 io 的功能。为了实现这一点,您可以让您的代码与您的接口/抽象 class 的实例一起工作。 现在这两者之间的区别就像接口没有实现一样简单。好吧,直到 Java 8,但没关系,这不是 ATM 需要担心的事情。 您的摘要 class 可以实现某些方法。例如,如果您的写入尝试没有成功,请重试。但是实际的写操作只会存在于实现它的那一个中。界面不行。

抽象classes 在单个程序员项目上没有多大意义。您可以将它们视为继承自 class 实现某些 method/s.

的程序员所获得的承诺