【发布时间】:2013-10-27 06:05:36
【问题描述】:
大家好,我对抽象类和接口有一些疑问
我不是在问接口和抽象类之间的区别。我只是询问抽象方法和接口方法之间的区别
抽象方法与接口方法相同。我知道如果我们在子类中继承接口和抽象类,那么我们必须实现那些侧面方法。但是我们不能实现非抽象方法。所以
- 我的问题是抽象方法和接口有什么区别?
和
2"。另一个问题是我们可以在抽象类中部分实现非抽象方法,是否可以在抽象类中部分实现抽象方法?
我也参考了很多网站,但没有一个给出第二个问题的解决方案
代码问题
这是我的抽象类,有一个抽象方法(xxx)和另一个非抽象方法(yyy)和接口方法(xxx)
public abstract class AbstractRam
{
public abstract int xxx();// What is the difference in interface method ?
public int yyy()
{
return 2;
}
}
public interface InterfaceRam
{
int xxx();// What is the difference in abstract method ?
}
我在另一个类中继承了两者
public class OrdinaryClass : AbstractRam
{
public OrdinaryClass()
{
//
// TODO: Add constructor logic here
//
}
public override int xxx()
{
return 1;
}
}
public class OrdinaryClass2 : InterfaceRam
{
public OrdinaryClass2()
{
//
// TODO: Add constructor logic here
//
}
public int xxx()
{
return 1;
}
}
看看我的xxx方法,两种方法都一样,差别不大
问:有区别吗?如果是一样的,那么哪个是最好的方法?
【问题讨论】:
-
部分是什么意思?
-
这已经被问过很多次了。因此,一个新问题必须更加具体。
-
另外,“我们不能实现非抽象方法”并不是真的。
-
@HenkHolterman hmm 我们可以在父(抽象)类中部分实现非抽象方法,然后我们可以在子类中完全实现该方法,是否可以抽象方法?明白了吗?
-
csc.exe:
MyMethod()无法声明主体,因为它被标记为抽象。抽象(或 VB 中的 MustInherit)方法不能包含实现。 “部分”实现的方法,或使用相同的方法,可以标记为virtual,并在派生类中被重写,只要重写的方法调用基实现。
标签: c# .net interface abstract-class abstract-methods