相关疑难解决方法(0)

接口与基类

我何时应该使用接口,何时应该使用基类?

如果我不想实际定义方法的基本实现,它应该始终是一个接口吗?

如果我有狗和猫类.为什么我要实现IPet而不是PetBase?我可以理解有ISheds或IBarks(IMakesNoise?)的接口,因为那些可以基于宠物放在宠物上,但我不明白哪个用于通用Pet.

language-agnostic oop static-typing interface base-class

754
推荐指数
17
解决办法
15万
查看次数

确切使用Abstract类

Abstract类的确切用法是什么?在普通的类中是不可能做同样的事情,因为它是一个抽象类?

c# abstract-class

18
推荐指数
3
解决办法
1万
查看次数

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

我有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 {

}
Run Code Online (Sandbox Code Playgroud)

案例2):

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

public abstract class B extends A {
    public abstract String giveSum();
}
Run Code Online (Sandbox Code Playgroud)

问候

java inheritance abstract-class

10
推荐指数
2
解决办法
2万
查看次数

7
推荐指数
3
解决办法
473
查看次数