C#基础概念之抽象类,接口,接口多继承
2009-03-20 10:55
411 查看
17.接口的多继承会带来哪些问题?
答:
C# 中的接口与类不同,可以使用多继承,即一个子接口可以有多个父接口。但如果两个父成员具有同名的成员,就产生了二义性(这也正是 C# 中类取消了多继承的原因之一),这时在实现时最好使用显式的声明
示例:
结果:
Count property: 100
Count function: 10000
18.抽象类和接口的区别?
答:
抽象类(abstract class)可以包含功能定义和实现,接口(interface)只能包含功能定义
抽象类是从一系列相关对象中抽象出来的概念, 因此反映的是事物的内部共性;接口是为了满足外部调用而定义的一个功能约定, 因此反映的是事物的外部特性
分析对象,提炼内部共性形成抽象类,用以表示对象本质,即“是什么”
为外部提供调用或功能需要扩充时优先使用接口
答:
C# 中的接口与类不同,可以使用多继承,即一个子接口可以有多个父接口。但如果两个父成员具有同名的成员,就产生了二义性(这也正是 C# 中类取消了多继承的原因之一),这时在实现时最好使用显式的声明
示例:
Code using System; using System.Collections.Generic; using System.Text; namespace Example17 { class Program { //一个完整的接口声明示例 interface IExample { //属性 string P { get; set; } //方法 string F(int Value); //事件 event EventHandler E; //索引指示器 string this[int Index] { get; set; } } interface IA { int Count { get; set;} } interface IB { int Count(); } //IC接口从IA和IB多重继承 interface IC : IA, IB { } class C : IC { private int count = 100; //显式声明实现IA接口中的Count属性 int IA.Count { get { return 100; } set { count = value; } } //显式声明实现IB接口中的Count方法 int IB.Count() { return count * count; } } static void Main(string[] args) { C tmpObj = new C(); //调用时也要显式转换 Console.WriteLine("Count property: {0}", ((IA)tmpObj).Count); Console.WriteLine("Count function: {0}", ((IB)tmpObj).Count()); Console.ReadLine(); } } }
结果:
Count property: 100
Count function: 10000
18.抽象类和接口的区别?
答:
抽象类(abstract class)可以包含功能定义和实现,接口(interface)只能包含功能定义
抽象类是从一系列相关对象中抽象出来的概念, 因此反映的是事物的内部共性;接口是为了满足外部调用而定义的一个功能约定, 因此反映的是事物的外部特性
分析对象,提炼内部共性形成抽象类,用以表示对象本质,即“是什么”
为外部提供调用或功能需要扩充时优先使用接口
相关文章推荐
- 黑马程序员:C#基础篇(四)抽象类、接口、继承与多态
- 黑马程序员——Java基础---面向对象(继承、多态、抽象类、接口、内部类)
- 黑马程序员 Java基础 面向对象:继承、final关键字、抽象类、模版方法模式、接口、多态、Object类
- Java基础笔记-继承、抽象类、接口、多态、内部类、异常
- 关于C#继承中 接口、抽象类、普通子类 微妙关系
- 黑马程序员——Java基础---面向对象(封装、继承、单例、抽象类、接口、内部类)
- Python开发基础-Day18继承派生、组合、接口和抽象类
- 黑马程序员——Java语言基础:继承、抽象类、接口
- java基础(2)-基础类型和语法(static、内部类、final、抽象类、接口、封装)(并将这些基础知识与java的三大特征关联(继承、多态、封装))
- Java基础10 接口的继承与抽象类
- 【Java基础】——java面向对象(中)—继承、抽象类、接口
- Java基础-继承、抽象类、接口
- 黑马程序员——java基础——继承、抽象类、接口、多态
- Py修行路 python基础 (十五)面向对象编程 继承 组合 接口和抽象类
- C#(面向对象基础-抽象类与接口)下-1
- C#基础系列--C#中抽象类和接口的区别
- python基础之类的继承与派生、组合、接口与归一化设计、抽象类、子类中调用父类方法
- JAVA基础day07 继承 final关键字 抽象类 接口 的学习
- 译:C#面向对象的基本概念 (Basic C# OOP Concept) 第三部分(多态,抽象类,虚方法,密封类,静态类,接口)
- c#接口和抽象类的一些概念