zoukankan      html  css  js  c++  java
  • 疑难杂症继承与接口

    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)。

  • 相关阅读:
    es5核心技术
    es6 迭代器 和 生成器 学习笔记
    nodejs 基础学习笔记
    node 基本原理
    mac php7 连接数据库遇到的问题
    express ,koa1, koa2学习笔记
    mac mysql的安装
    webpack 给css添加前缀
    利用git将本地的代码同步到github上
    vuex 学习总结及demo
  • 原文地址:https://www.cnblogs.com/johnsmith/p/2200586.html
Copyright © 2011-2022 走看看