有 Java 编程相关的问题?

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


共 (2) 个答案

  1. # 1 楼答案

    脑海中浮现的一个用例

    假设你有一门课,如下所示

    public abstract class Animal {
        // Some stuff.
    }
    

    然后你说,好吧,现在我想要一个GiraffeGiraffe是特定的,所以没有必要让它abstract

    public class Giraffe {
        // Some stuff that overrides or uses the Animal behaviour.
    }
    

    现在给它一些时间,当你有六七个应用程序使用你的代码时

    然后,有一天,当你感到无聊时,你决定在维基百科上查找长颈鹿,你发现事实上,Giraffe非常模糊!有斑点长颈鹿,条纹长颈鹿,长腿长颈鹿。。所有这些都出现在不同的国家!那你是做什么的

    • 你可以把长颈鹿变成一个abstract类,把它变成一个子类。。但是你已经有很多应用程序在使用你的代码。你会立即将它们过时并强制进行大规模更新吗
    • 您可以创建更多的类来描述Giraffe的更具体形式,但是StripyGiraffe不够具体。。除非你能让那个类abstract

    那你是怎么做的

    你选择后者

    public abstract class StripyGiraffe extends Giraffe
    

    你可以继续扩展

    public class AfricanStripyGiraffe extends StripyGiraffe
    

    这样一来,旧代码就可以顺利运行,并且仍然非常欢迎您尽可能地扩展对象层次结构。当对象不够具体,无法实例化时,可以通过将其声明为abstract来维护对象的完整性,并且使用此方法允许用户仍然声明

    Giraffe geoffrey = new AfricanStripyGiraffe();
    
  2. # 2 楼答案

    在Java中,我从对象类型派生的每个类。这就是答案,当你从具体的类中创建一个抽象的类时。您只需声明实现不完整,应该在较低的抽象层上进行详细说明