比如使用抽象类:
//创建一个抽象类
public abstract 汽车
{
public int *数量{get;set;};
public int 重量{get;set;};
public string 名称();
}
//宝马类,继承了汽车类
public class BMW:汽车
{
public override int *数量{get...;set...;};
public override int 重量{get....;set...;};
public override string 名称(){return "宝马"};
}
//奔驰类,继承了汽车类
public class Benz:汽车
{
public override int *数量{get...;set...;};
public override int 重量{get....;set...;};
public override string 名称(){return "宝马"};
}
//具体使用方法:
//我想在这个方法中的参数既可以传入BMW或者Benz
public void MyMethod(汽车 car)
{
//........
}
其实上面这种情况用接口来实现也是一样的,但我想知道它们两种有什么区别吗?那种效率更好.谢谢!
10 个解决方案
#1
接口主要是提供某种调用或者使用规范,方便扩展。继承是为了代码重用多些吧。目的就不一样哦。看你的需求吧?
#2
用继承的 不是挺好的吗
不太清楚 这个
不太清楚 这个
#3
如果要设计大的功能单元或者预计要创建组件的多个版本则用抽象类
如果要设计小而简练的功能块则用接口
个人观点哈!
如果要设计小而简练的功能块则用接口
个人观点哈!
#4
不能用接口,接口只能包括对方法标头的定义(没有方法的代码)
但是你这里基类里用到了三个属性,借口是无法对属性进行定义的
但是你这里基类里用到了三个属性,借口是无法对属性进行定义的
#5
接口可以定义属性呀
#6
还请高手们谈谈经验
#7
抽象类和接口好像没有效率上的冲突。抽象类有实现的方法以及自己的变量,接口只是定义一组规范。如果楼主说的效率是编码上的效率我想应该是抽象类,但是我认为这两个东西应该是在不同设计时期的产物,接口更抽象,而抽象类则已经具体化了部分。
我个人认为是这样的!
我个人认为是这样的!
#8
谢谢大家.
#9
学习ing
#10
Coad规则
仅当下列的所有标准被满足时,方可使用继承:
n 子类表达了“是一个…的特殊类型”,而非“是一个由…所扮演的角色”。
n 子类的一个实例永远不需要转化(transmute)为其它类的一个对象。
n 子类是对其父类的职责(responsibility)进行扩展,而非重写或废除(nullify)。
n 子类没有对那些仅作为一个工具类(utility class)的功能进行扩展。
n 对于一个位于实际的问题域(Problem Domain)的类而言,其子类特指一种角色(role),交易(transaction)或设备(device)。
接口
n 接口是一个对象在对其它的对象进行调用时所知道的方法集合。
n 一个对象可以有多个接口(实际上,接口是对象所有方法的一个子集)
n 类型是对象的一个特定的接口。
n 不同的对象可以具有相同的类型,而且一个对象可以具有多个不同的类型。
n 一个对象仅能通过其接口才会被其它对象所了解。
n 某种意义上,接口是以一种非常局限的方式,将“是一种…”表达为“一种支持该接口的…”。
n 接口是实现插件化(pluggability)的关键
---------------------------------------------------
建议使用接口。
在c#里面一个类不能多重继承类,但是可以实现多个接口。使用接口的话,你的类易于扩充。
仅当下列的所有标准被满足时,方可使用继承:
n 子类表达了“是一个…的特殊类型”,而非“是一个由…所扮演的角色”。
n 子类的一个实例永远不需要转化(transmute)为其它类的一个对象。
n 子类是对其父类的职责(responsibility)进行扩展,而非重写或废除(nullify)。
n 子类没有对那些仅作为一个工具类(utility class)的功能进行扩展。
n 对于一个位于实际的问题域(Problem Domain)的类而言,其子类特指一种角色(role),交易(transaction)或设备(device)。
接口
n 接口是一个对象在对其它的对象进行调用时所知道的方法集合。
n 一个对象可以有多个接口(实际上,接口是对象所有方法的一个子集)
n 类型是对象的一个特定的接口。
n 不同的对象可以具有相同的类型,而且一个对象可以具有多个不同的类型。
n 一个对象仅能通过其接口才会被其它对象所了解。
n 某种意义上,接口是以一种非常局限的方式,将“是一种…”表达为“一种支持该接口的…”。
n 接口是实现插件化(pluggability)的关键
---------------------------------------------------
建议使用接口。
在c#里面一个类不能多重继承类,但是可以实现多个接口。使用接口的话,你的类易于扩充。
#1
接口主要是提供某种调用或者使用规范,方便扩展。继承是为了代码重用多些吧。目的就不一样哦。看你的需求吧?
#2
用继承的 不是挺好的吗
不太清楚 这个
不太清楚 这个
#3
如果要设计大的功能单元或者预计要创建组件的多个版本则用抽象类
如果要设计小而简练的功能块则用接口
个人观点哈!
如果要设计小而简练的功能块则用接口
个人观点哈!
#4
不能用接口,接口只能包括对方法标头的定义(没有方法的代码)
但是你这里基类里用到了三个属性,借口是无法对属性进行定义的
但是你这里基类里用到了三个属性,借口是无法对属性进行定义的
#5
接口可以定义属性呀
#6
还请高手们谈谈经验
#7
抽象类和接口好像没有效率上的冲突。抽象类有实现的方法以及自己的变量,接口只是定义一组规范。如果楼主说的效率是编码上的效率我想应该是抽象类,但是我认为这两个东西应该是在不同设计时期的产物,接口更抽象,而抽象类则已经具体化了部分。
我个人认为是这样的!
我个人认为是这样的!
#8
谢谢大家.
#9
学习ing
#10
Coad规则
仅当下列的所有标准被满足时,方可使用继承:
n 子类表达了“是一个…的特殊类型”,而非“是一个由…所扮演的角色”。
n 子类的一个实例永远不需要转化(transmute)为其它类的一个对象。
n 子类是对其父类的职责(responsibility)进行扩展,而非重写或废除(nullify)。
n 子类没有对那些仅作为一个工具类(utility class)的功能进行扩展。
n 对于一个位于实际的问题域(Problem Domain)的类而言,其子类特指一种角色(role),交易(transaction)或设备(device)。
接口
n 接口是一个对象在对其它的对象进行调用时所知道的方法集合。
n 一个对象可以有多个接口(实际上,接口是对象所有方法的一个子集)
n 类型是对象的一个特定的接口。
n 不同的对象可以具有相同的类型,而且一个对象可以具有多个不同的类型。
n 一个对象仅能通过其接口才会被其它对象所了解。
n 某种意义上,接口是以一种非常局限的方式,将“是一种…”表达为“一种支持该接口的…”。
n 接口是实现插件化(pluggability)的关键
---------------------------------------------------
建议使用接口。
在c#里面一个类不能多重继承类,但是可以实现多个接口。使用接口的话,你的类易于扩充。
仅当下列的所有标准被满足时,方可使用继承:
n 子类表达了“是一个…的特殊类型”,而非“是一个由…所扮演的角色”。
n 子类的一个实例永远不需要转化(transmute)为其它类的一个对象。
n 子类是对其父类的职责(responsibility)进行扩展,而非重写或废除(nullify)。
n 子类没有对那些仅作为一个工具类(utility class)的功能进行扩展。
n 对于一个位于实际的问题域(Problem Domain)的类而言,其子类特指一种角色(role),交易(transaction)或设备(device)。
接口
n 接口是一个对象在对其它的对象进行调用时所知道的方法集合。
n 一个对象可以有多个接口(实际上,接口是对象所有方法的一个子集)
n 类型是对象的一个特定的接口。
n 不同的对象可以具有相同的类型,而且一个对象可以具有多个不同的类型。
n 一个对象仅能通过其接口才会被其它对象所了解。
n 某种意义上,接口是以一种非常局限的方式,将“是一种…”表达为“一种支持该接口的…”。
n 接口是实现插件化(pluggability)的关键
---------------------------------------------------
建议使用接口。
在c#里面一个类不能多重继承类,但是可以实现多个接口。使用接口的话,你的类易于扩充。