相关疑难解决方法(0)

接口与基类

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

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

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

language-agnostic oop static-typing interface base-class

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

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

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

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

oop inheritance abstract-class interface

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

确切使用Abstract类

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

c# abstract-class

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

抽象类与接口

我对C#中抽象类的使用有点困惑.在C++中,定义一个继承抽象类的类可以遵循的模板是有意义的.但是,在C#中,Interface不具备相同的用途吗?

确实,抽象类可以具有接口不提供的默认实现.因此,如果实现不需要包含在基类中,那么最好选择接口吗?

c#

18
推荐指数
6
解决办法
5844
查看次数

为什么抽象类和接口都存在于C#中?

如果我们可以通过将类中的所有成员都设置为抽象来实现接口功能,那么为什么抽象类和接口都存在于C#中.

是因为:

  1. 接口存在多重继承
  2. 有接口是有意义的,因为对象的CAN-DO功能应放在接口而不是基本抽象类中.

请澄清

.net c# oop

13
推荐指数
3
解决办法
6300
查看次数

接口还是抽象类?

对于我的新宠物项目,我有一个设计问题,已经确定了,但我也想要其他一些意见.

我有两个类(简化):

class MyObject
{
  string name {get;set;}
  enum relation {get;set;}
  int value {get;set;}
}

class MyObjectGroup
{
  string name {get;set;}
  enum relation {get;set;}
  int value {get;set;}
  List<MyObject> myobjects {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

在项目后期MyObjectGroup,并MyObject应同等地使用.为此,我可以采取两种方式:

  • 创建一个界面: IObject
  • 创建一个抽象类: ObjectBase

我决定采用界面的方式,我后来在代码中不能ObjectBase每次都写,而IObject只是为了方便 - 但这种方式的其他积极因素是什么?

第二,如何增加IXmlSerializable整个故事呢?让接口继承IXmlSerializable或者它是否有更多的正面要IXmlSerializable在抽象基类中实现?

c# theory interface abstract

13
推荐指数
4
解决办法
7715
查看次数

接口和抽象类只是虚拟抽象方法是一回事吗?

如果我有一个包含类似类的项目,有些可能使用相同的实现,但在大多数情况下,它们实现了自己的方法来处理接口或抽象类中定义的方法.我试图弄清楚接口/抽象类是否更好.如果你可以使用虚拟抽象方法的抽象类,我不明白接口的意义.

这是一个界面:

public interface IAthlete
{
    void Run();
}
Run Code Online (Sandbox Code Playgroud)

这是一个抽象类:

public abstract class Athlete
{
    public abstract void Run();
}
Run Code Online (Sandbox Code Playgroud)

这是接口的实现:

public class Sprinter : IAthlete
{
    public void Run()
    {
        Console.WriteLine("Running Fast....");
    }
}
Run Code Online (Sandbox Code Playgroud)

这是抽象类的扩展:

public class MarathonRunner : Athlete
{
    public override void Run()
    {
         Console.Write("Jogging....");
    }
 }
Run Code Online (Sandbox Code Playgroud)

现在,如果我决定向接口或抽象方法添加一个名为Stop的方法,Sprinter和MarathonRunner都会中断,因为我可以提供一些默认的抽象实现,这似乎是一个更好的选择.我错过了什么吗?

c# oop abstract-class interface

9
推荐指数
1
解决办法
2571
查看次数

如何决定是使用接口还是抽象类?

我已经进入C#并且总是感到在界面和抽象类之间应该选择什么之间的混淆.有人可以帮忙解决这个问题吗?

谢谢 ,

c# oop

7
推荐指数
2
解决办法
430
查看次数

你能帮我理解一个实际例子中的抽象类与接口的用法吗?

你能否给我一个对抽象类和继承使用几乎过于简单化的理解并帮助我,这样我才能真正理解这个概念以及如何实现?我有一个项目,我正在努力完成,并且失去了如何实施.我一直在和我的教授聊天,并被告知,如果我无法弄明白,我可能还没准备好上课.我已经完成了prequestite课程,但仍然无法理解这些概念.

澄清一下,到目前为止,我所做的项目如下.我还没有填写狗/猫类等.你能指点一下吗?我不是要求任何人给我"答案".我只是迷失在哪里.我参加在线课程,他与我的沟通工作一直令人不安.我刚刚完成了所有其他课程的4.0,所以我愿意付出努力,但我对这些概念的理解以及如何实际应用它们感到迷茫.

是否有任何意见或帮助可以让我在这个项目中取得进一步进展?

我要实现的内容如下:

概述:

本练习的目的是演示Interfaces,Inheritance,Abstract classes和Polymorphism的使用.您的任务是获取提供的程序shell并添加适当的类和相应的类成员/方法,以使此程序正常运行.您不能对提供的任何代码进行更改,您只能添加您编写的类.尽管有许多方法可以使程序正常工作,但您必须使用演示Interfaces,
Inheritance,Abstract classes和Polymorphism的技术.同样,为了清楚起见,您可以添加到提供的代码,但不能更改或删除任何代码.提供的代码将使用非常少的附加代码,并将满足练习的要求.

如果成功完成分配,程序应在运行时输出以下语句:

我的名字是Spot,我是一只狗

我的名字是费利克斯,我是一只猫

要求:

1)您必须有一个名为"Animal"的抽象基类,Dog和Cat类可以从中派生出来.

2)Animal基类必须从接口'IAnimal'派生,它是唯一应该从IAnimal派生的类.

3)由于所有动物都有一个名字,一个名字不是一个特定于狗或猫的属性,动物

基类应该是存储名称的位置以及实现WhatIsMyName get-property的位置.

4)您需要创建一个仅从Animal基类派生的Dog和Cat类.

5)Dog和Cat类应该实现WhatAmI get-property并返回相应的字符串值.

您无法更改的代码:

using System;

namespace IT274_U2
{
    public interface IAnimal
    {
        string WhatAmI { get; }
        string WhatIsMyName { get; }
    }

    public class TesterClass
    {
        public static void DescribeAnimal(IAnimal animal)
        {
            Console.WriteLine("My name is {0}, I am a {1}", animal.WhatIsMyName, animal.WhatAmI);
        }

        static void Main(string[] args)
        {
            Dog mydog = new Dog("Spot");
            Cat mycat = new Cat("Felix");
            DescribeAnimal(mydog);
            DescribeAnimal(mycat); …
Run Code Online (Sandbox Code Playgroud)

c# abstract-class interface

5
推荐指数
2
解决办法
3418
查看次数

1
推荐指数
2
解决办法
3547
查看次数

接口和抽象类有什么区别?

重复:

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

可能是最着名的软件开发人员面试问题之一.

你的答案是什么?

编辑:我想知道如何在现实生活中回答这个问题.请尝试像在实际面试时一样制定答案(完整,但不要太长,当然不发布任何链接).

oop abstract-class interface

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