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

Java中的抽象类和方法,继承

如何解决《Java中的抽象类和方法,继承》经验,为你挑选了2个好方法。

我有B类,它继承自A类.超类A是抽象的,包含一个抽象方法.我不想在B类中实现抽象方法,因此我需要将类B声明为抽象.声明B类抽象,有两件事对我有用(程序编译并正确运行):

1.)我没有在B类中声明任何抽象方法,甚至认为该类是抽象的.我认为这是有效的,因为该类继承了类A的抽象方法,这足以使类被声明为抽象:我们不需要在类中直接声明的任何其他抽象方法.

2.)我在类B中声明了与在类A中声明的相同的抽象方法.这是某种覆盖(?),与java中的覆盖不同(使用相同的头,但提供不同的实现) ),这里我只是再次使用该方法的相同标题.

这两件事都有效,我不确定它们是否都好,以及其中一些是否优先(更正确).两种方式是否相同(它们对Java是否相同)?

这里我给出一些示例类,所以我的意思对你来说更清楚:

情况1.):

public abstract class A {
    public abstract String giveSum();
}

public abstract class B extends A {

}

案例2):

public abstract class A {
    public abstract String giveSum();
}

public abstract class B extends A {
    public abstract String giveSum();
}

问候



1> Jared..:

在Java中,abstract类注释表明该类无法直接实例化.可以abstract简单地声明一个类,因为它永远不应该被实例化(可能它只包含静态方法),或者因为它的子类应该被实例化.

它是不是一个要求abstract的类包含abstract的方法(逆真实的:含有一个或多个类abstract的方法必须是abstract).

你是否应该复制抽象方法定义的问题可能被认为是一个风格问题 - 但是我很难提出一个支持重复定义的论据(我能提出的唯一论据是在这种情况下)类层次结构可能会更改语义或方法的使用,因此您希望在类B中提供额外的javadoc.)

反对重新定义该abstract方法的主要论点是重复的代码很糟糕 - 它使重构变得更加繁琐(所有经典的"不重复的代码"参数都适用.)



2> Yoni Roit..:

它们在功能上是相同的,但第一个是首选,因为它更短并且不奇怪.

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