我可以在Java中创建抽象属性吗?



这段代码在Java中合法吗?我试图建立一个抽象卡片类和一个子类,将从抽象类继承方法和属性。我知道我也可以创建抽象方法和常规方法,但我也可以在abreact类中创建属性吗?

public abstract class CardsDecks {
private static String hearts = "HEARTS";
private static String clubs = "CLUBS";
private static String diamonds = "DIAMOND";
private static String spades = "SPADES";
abstract String shuffle();
}

是的,你可以(见上文)…但是…

在你的例子中,你不应该(很可能)将描述为属性,或者像那样对建模

它们应该是建模常量…除非有明确的要求,您应该能够在运行时更改卡套件的名称!将它们声明为static final,而不仅仅是static

为什么?因为你不希望一些代码不小心赋值给其中一个属性。有人阅读代码不想要扫描代码库寻找意外作业。

我也认为(最终)将它们描述为简单的属性是没有帮助的,即使它们不是常数。我称它们为"类属性"以区别于普通(非static)的"属性"。(但这是我的观点……)

最后,可变静态字段通常不是一个好主意。它们是面向对象的对立面,并引入了一堆问题;例如,当你在编写单元测试时,它们是潜在的问题。

同样值得注意的是,在Java中声明为static的字段是不继承的(在完全意义上),并且不能被覆盖。

抽象类可以有属性。

抽象类与常规类非常相似,只是它们不能被实例化。它们必须由子类实现/扩展,这包括其中的抽象方法。

最新更新