相关疑难解决方法(0)

1705
推荐指数
22
解决办法
123万
查看次数

682
推荐指数
15
解决办法
105万
查看次数

我该如何解释Interface和Abstract类之间的区别?

在我的一次访谈中,我被要求解释InterfaceAbstract类之间的区别.

这是我的回答:

Java接口的方法是隐式抽象的,不能有实现.Java抽象类可以具有实现默认行为的实例方法.

在Java接口中声明的变量默认为final.抽象类可能包含非最终变量.

默认情况下,Java接口的成员是公共的.Java抽象类可以具有类似私有,受保护等类通常的类成员.

应使用关键字"implements"实现Java接口; 应使用关键字"extends"扩展Java抽象类.

接口只能扩展另一个Java接口,抽象类可以扩展另一个Java类并实现多个Java接口.

Java类可以实现多个接口,但它只能扩展一个抽象类.

然而,面试官并不满意,并告诉我这个描述代表了" 书本知识 ".

他告诉我一个更实际的回答,解释我何时会使用实际例子在界面上选择一个抽象类.

我哪里做错了?

java oop inheritance abstract-class interface

456
推荐指数
13
解决办法
42万
查看次数

如何对抽象类进行单元测试:使用存根扩展?

我想知道如何对抽象类进行单元测试,以及扩展抽象类的类.

我应该通过扩展它来测试抽象类,删除抽象方法,然后测试所有具体方法吗?然后只测试我覆盖的方法,并在单元测试中测试扩展我的抽象类的对象的抽象方法?

我是否应该有一个抽象的测试用例,可以用来测试抽象类的方法,并在我的测试用例中为扩展抽象类的对象扩展这个类?

请注意,我的抽象类有一些具体的方法.

java testing abstract-class unit-testing

429
推荐指数
6
解决办法
14万
查看次数

何时使用接口而不是抽象类,反之亦然?

这可能是一个通用的OOP问题.我想根据它们的用法在接口和抽象类之间进行一般性比较.

什么时候想要使用接口?何时想要使用抽象类

oop inheritance abstract-class interface

412
推荐指数
13
解决办法
31万
查看次数

我怎么知道何时创建界面?

我正处于开发学习的某个阶段,我觉得我必须更多地了解接口.

我经常阅读它们,但似乎我无法掌握它们.

我已经阅读过这样的例子:动物基类,IAnimal界面,如'Walk','Run','GetLegs'等等 - 但我从来没有做过某些事情,感觉就像"嘿我应该使用界面这里!"

我错过了什么?为什么我要掌握这么难的概念!我只是因为我可能没有意识到对一个人的具体需求而感到害怕 - 主要是由于理解它们的一些缺失方面!这让我觉得自己在成为开发者方面缺少一些东西!如果有人有过这样的经历并取得了突破,我会很感激如何理解这个概念.谢谢.

oop design-patterns class-design interface

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

继承与聚合

关于如何在面向对象的系统中最好地扩展,增强和重用代码,有两种思路:

  1. 继承:通过创建子类来扩展类的功能.覆盖子类中的超类成员以提供新功能.当超类想要一个特定的接口但是对它的实现不可知时,使方法抽象/虚拟以强制子类"填空".

  2. 聚合:通过获取其他类并将它们组合到一个新类中来创建新功能.为这个新类附加一个公共接口,以便与其他代码进行互操作.

每个的好处,成本和后果是什么?还有其他选择吗?

我看到这个辩论定期出现,但我认为它还没有被问到Stack Overflow(虽然有一些相关的讨论).谷歌的结果也令人惊讶地缺乏.

language-agnostic oop inheritance aggregation

143
推荐指数
6
解决办法
8万
查看次数

如何在接口中实现属性

我有IResourcePolicy包含该属性的接口Version.我必须实现这个包含值的属性,代码写在其他页面中:

IResourcePolicy irp(instantiated interface)
irp.WrmVersion = "10.4";
Run Code Online (Sandbox Code Playgroud)

我该如何实施财产version

public interface IResourcePolicy
{
   string Version
      {
          get;
          set;
      }
}
Run Code Online (Sandbox Code Playgroud)

.net c#

129
推荐指数
4
解决办法
16万
查看次数

接口与抽象类

在C#中,何时应该使用接口,何时应该使用抽象类?决定因素是什么?

c# inheritance abstract-class interface

120
推荐指数
4
解决办法
15万
查看次数

Java中的抽象类与接口

我被问到一个问题,我想在这里查看我的答案.

问:在哪种情况下扩展抽象类而不是实现接口更合适?

答:如果我们使用模板方法设计模式.

我对么 ?

如果我无法清楚地陈述问题,我很抱歉.
我知道抽象类和接口之间的基本区别.

1)当需求需要在特定操作的每个子类中实现相同的功能(实现方法)和其他一些操作的不同功能(仅方法签名)时,使用抽象类

2)如果需要将签名设置为相同(并且实现不同),请使用接口,以便您可以遵守接口实现

3)我们可以扩展一个抽象类的最大值,但可以实现多个接口

重申一个问题:除了上面提到的那些之外,还有其他任何场景,具体我们需要使用抽象类(一个是模板方法设计模式在概念上仅基于此)吗?

接口与抽象类

在这两者之间做出选择真的取决于你想做什么,但幸运的是,对我们来说,Erich Gamma可以帮助我们一点.

一如既往地存在权衡,接口为您提供基类的自由,抽象类使您可以自由地在以后添加新方法. - Erich Gamma

无法在不改变代码中的许多其他东西的情况下更改接口,因此避免这种情况的唯一方法是创建一个全新的接口,这可能并不总是一件好事.

Abstract classes应主要用于密切相关的对象.Interfaces更好地为不相关的类提供通用功能.

java abstract-class design-patterns interface

79
推荐指数
7
解决办法
8万
查看次数