加abstract就可以了。不过,首先要想想
有没有这样做的理由。
有没有这样做的理由。
解决方案 »
- 如何根据客户机的HOST ID生成相应的软件授权证书?
- Graphics 如何重绘,或清除内容
- 关于数组操作效率的问题
- 开源Galbanum之Orm
- asp.net 从web service 下载文件点按钮,自动存储到指定文件夹,不用弹出窗口,请问怎么弄?在线等!
- VS2005 DataSet设计器中表多的时候会出现问题吗?
- 求读取文件夹下的视频代码和类似注册邮箱出现已存在用户,文本框后提示已存在(用label提示)的代码
- QQ中怎么才能让设置窗口弹出来?
- 要在自定义控件中接受数据集有什么好办法?
- 如何把Word嵌入WinForm里面?
- 100求解,关于水晶报表
- rsa 数据加密问题,高手请进-关于公钥的 Modulus Exponent 获取问题
public interface Class2
{
void methodA();
void methodB();
}
public abstract class Class1:Class2
{
public Class1()
{
//
// TODO: 在此处添加构造函数逻辑
//
} public void methodA()
{
} public void methodB()
{
}
}
这样写是对的,编译通过!
//dosomething
}
interface A{
{
void methodA();
void methodB();
}
abstract class B : A{
{
public abstract
void methodA(){
//dosomething
}
public abstract
void methodB(){
//dosomething
} }
但是A{的实现将 methodA() 和 methodB() 映射到抽象方法上,这些抽象方法必须在从B 派生的非抽象类中重写。
抽象类 B 继承了接口 A ,但是只想实现其中的一个方法methodA()!
那么,在B中为什么还得加上 methodB()的实现??或者重复劳动写一遍 abstract methodB();!!不是多此一举??
public void methodA(){
//dosomething
}
public void methodB(){
//dosomething
} 把abstract去掉才行!
可是这个约束是不是有点多此一举的感觉?!
abstract class B : A{
{
public abstract void methodA(); public abstract void methodB();
}
ms-help://MS.MSDNQTR.2003FEB.2052/csref/html/vclrfAbstract.htmabstract 修饰符可以和类、方法、属性、索引器及事件一起使用。在类声明中使用 abstract 修饰符以指示类只能是其他类的基类。抽象类具有以下特性: 抽象类不能实例化。
抽象类可以包含抽象方法和抽象访问器。
不能用 sealed 修饰符修改抽象类,这意味着该类不能被继承。
从抽象类派生的非抽象类必须包括继承的所有抽象方法和抽象访问器的实实现。
在方法或属性声明中使用 abstract 修饰符以指示此方法或属性不包含实现。抽象方法具有以下特性: 抽象方法是隐式的 virtual 方法。
只允许在抽象类中使用抽象方法声明。
因为抽象方法声明不提供实实现,所以没有方法体;方法声明只是以一个分号结束,并且在签名后没有大括号 ({ })。例如:
public abstract void MyMethod();
实现由 overriding 方法提供,它是非抽象类的成员。
在抽象方法声明中使用 static 或 virtual 修饰符是错误的。
除了在声明和调用语法上不同外,抽象属性的行为与抽象方法一样。 在静态属性上使用 abstract 修饰符是错误的。
在派生类中,通过包括使用 override 修饰符的属性声明可以重写抽象的继承属性。
抽象类必须为所有接口成员提供实现。