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

时间:2017-12-18 16:41:19

标签: java abstract

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

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

<div id="container">
<div class="header">
HEADER
</div>
<div class="content-wrapper">
    <div class="content">
         <h1>Title 1</h1>

        <div>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,...
        </div>
    </div>
    <div class="content">
         <h1>Title 2</h1>
        <div>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,...
        </div>
    </div>
    </div>
</div>

然后我们有一个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"); } } 方法的课程:

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(); } } 中写下以下内容:

Games

然后它不必是public void start(){ System.out.print(""); } ,输出将是相同的,我甚至可以实例化abstract类。那么制作抽象方法和类的关键是什么?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

抽象类对单个程序员项目没有多大意义。您可以将它们视为程序员从继承该类实现某些方法的程序员所获得的承诺。