当前位置:  开发笔记 > 编程语言 > 正文

Java - 包含变量的抽象类?

如何解决《Java-包含变量的抽象类?》经验,为你挑选了2个好方法。

让抽象类定义实例变量是一种好习惯吗?

public abstract class ExternalScript extends Script {

    String source;

    public abstract void setSource(String file);

    public abstract String getSource();
}

然后子类ExternalJavaScript.class将自动获取源变量,但是如果所有子类本身都定义了源代码而不是继承,我觉得读代码更容易.

你有什么建议?

/亚当



1> Egwor..:

我会认为这样的事情要好得多,因为你要添加一个变量,为什么不限制访问并使其更清晰呢?你的吸气剂/安装者应该按照他们对锡的说法做.

public abstract class ExternalScript extends Script {

    private String source;

    public void setSource(String file) {
        source = file;
    }

    public String getSource() {
        return source;
    }
}

回过头来回答这个问题,你是否曾经在阅读它时看看getter/setter代码的位置?如果他们都进行了设置,那么在阅读代码时你不需要担心函数的功能.还有一些其他原因需要考虑:

如果source受到保护(子类可以访问),那么代码就会变得混乱:谁在改变变量?当它是一个对象时,当你需要重构时它变得很难,而一种方法往往会使这一步更容易.

如果你的getter/setter方法没有获取和设置,那么将它们描述为其他方法.

总是想想你的班级是否真的是一个不同的东西,这应该有助于决定你是否还需要其他东西.



2> Gishu..:

当然..为什么不呢?
为了提高存储和维护效率,抽象基类只是为了容纳两个或多个类共同的容纳行为和数据的便利.它是一个实现细节.
但请注意,您没有使用应该使用接口的抽象基类.请参阅Interface vs Base类

推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有