现在的位置: 首页 > 综合 > 正文

疑难杂症—-继承与接口

2012年10月02日 ⁄ 综合 ⁄ 共 1592字 ⁄ 字号 评论关闭

1. C#虚基类继承与接口的区别

  ①接口不包含任何实现,接口没有构造方法,所有成员都是public的,用接口来定义类,规范类,抽象类,而类则负责功能的具体的实现。接口里面所有的东西都是抽象的。

  ②抽象类是不完全的类,里面有抽象的方法和属性,也可以有具体的方法和属性。

  ③类里面则都是方法和属性的实现。

 

  C#中一个类只可以派生于一个类,而可以实现多个接口。一个类派生于另一个类就是借用了另一个类中的已经实现的功能。一个类实现了一个接口,这个类就做出了一个承诺,必须实现接口中所有的功能(类实现了接口就表示给这个类加了一个规范,类必须遵循规范中的所有条例)。

  接口是设计用的,而类是用来实现设计好的功能。接口中除去方法还可以包含属性,索引器,事件。不可以包含常量,域,构造函数,析构函数,静态成员。(这些都不太懂)

 

  所有抽象的东西必须被实现:

  一个类派生于另一个类或者实现一个或多个接口,那么基类和接口中所有抽象的方法,属性必须被派生类做覆盖(接口中所有东西都是抽象的,而抽象类中有部分是抽象的)。

2. 类实现接口的方法

  抽象类,用来说明其派生类是什么,称之为“Is-a”原则。
  接口,用来说明其派生类能做什么,称之为“Can-Do”原则。

3. 抽象类和接口的区别 

  

4. 一个关于类的继承与重写父类方法的面试题

    class A {
public A() {
Print();
}
public virtual void Print() { }
}
class B : A {
int x = 1;
int y;
public B() {
y = 2;
}
public override void Print() {
Console.WriteLine("x=" + x + " y=" + y);
}
}

  这道面试题如上,问题是当实例化B的时候会输出什么?

5. OO中的继承分析

6. 一个关于接口的案例

  之前一直不知道接口的作用到底是什么,看了几篇文章以后,终于有点觉悟了,下面是一个自己写的Demo:

    //USB接口
public interface USB {
void ChargeForPhones();
}

//诺基亚手机
public class Nokia : USB {

#region USB Members

public void ChargeForPhones()
{
Console.WriteLine("Charge for Nokia Phones!");
}

#endregion
}

//摩托手机
public class Moto:USB {

#region USB Members

public void ChargeForPhones()
{
Console.WriteLine("Charge for Moto Phones!");
}

#endregion
}

//一台专门为带USB接口的设备充电的设备
public class Charger {
public void Charge(USB usb) {
usb.ChargeForPhones();
}
}

class Program
{
static void Main(string[] args)
{
//现在有一台专门为USB接口的设备充电的机器
Charger charger = new Charger();
//又有一部诺基亚的手机(该手机是USB接口的)
USB NokiaWithUsb = new Nokia();
//现在为诺基亚手机充电
charger.Charge(NokiaWithUsb);

//同样如果又有一部摩托的手机也要充电,那么只要是实现了USB接口的,同样也可以用这台充电机器给它充电
USB MotoWithUsb = new Moto();
charger.Charge(MotoWithUsb);
}
}

  这里的USB接口中的方法可以理解为每一种具有USB接口的手机或者其它在充电的时候在屏幕上面显示什么,这个每个牌子的都会自己设计(就是手机中的实现USB接口的方法ChargeForPhones)。

抱歉!评论已关闭.