有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java抽象类扩展了具体类

我之前了解到抽象类可以扩展具体类。虽然我从JAVA设计师那里看不出这样做的原因,但这没关系。 我还了解到,扩展具体类的抽象类可以使重写的方法抽象。为什么?你能提供有用的用例吗?我正在努力学习设计模式,我不想错过任何东西

下面是一个例子:

public class Foo 
{
    public void test()
    {
    }
}

public abstract class Bar extends Foo
{
   @Override
   public abstract void test();
}

共 (2) 个答案

  1. # 1 楼答案

    当一个系统不断发展,我们不想干扰现有的代码时,这种灵活性尤其有用

    我想一个简单的例子就是考虑< MSDocReader > EEM>类。此类是遗留系统的一部分,许多其他应用程序都依赖于此

    现在需求发生了变化。我们必须编写用于读取docx文件、ppt甚至xsl文件的类

    MSDocReader类包含可以重用的方法,例如获取文件大小(以KBs为单位),连接到。Net框架(如果我没有错的话:-)

    现在使用这个规定,我们可以编写一个abstract类AbstractMSFileReader,它将包含MSDocReader中使用的所有方法。但是这个类将把read方法作为抽象

    原因是我们想强迫开发者使用他们自己版本的read方法。(我们不应该使用继承,因为继承清楚地表明 子类方法将扩展父方法的功能。读取文档文件和读取excel文件是两件不同的事情,它们不属于 同样的等级制度。 )

    你可能会说,我们可以创建一个抽象类,然后让MSDocReader类扩展这个抽象类。但也有可能 MSDocReader类可能正在扩展其他类,因为java不支持多重继承。,它会制造问题

  2. # 2 楼答案

    使扩展类的类(抽象)提供特定类型的实现

    例如:

    • 抽象类别A
    • ClassB扩展了ClassB——提供了ClassA中定义的抽象方法的具体实现