zoukankan      html  css  js  c++  java
  • C# 接口

    interface IPrint { 
    void Print(); 


    class A : IPrint { 
    public void Print() { 
    System.Console.WriteLine("A"); 



    class B : IPrint { 
    public void Print() { 
    System.Console.WriteLine("B"); 



    class AppMain { 
    public static void Print(IPrint obj) { 
    obj.Print(); 

    public static void Main() { 
    Print(new A()); // display A 
    Print(new B()); // display B 

    }

    在这个例子中,IPrint 接口中定义了Print方法,但没有实现方法体.
    类A和类B都继承了IPrint接口,并且实现了不同的Print方法.
    在AppMain 中调用AB,获得不同的打印结果

    =============================================

    这是一个规范和思维习惯问题。接口是程序对功能不同,但使用方法相同的类的概括和定义,如果你的很多类要继承同一个接口,但又经常都不需要实现所有这个接口的所有方法或者属性,那就是你的接口设计的有问题。举个例子:
    比如, "手动档轿车" 这个接口,它需要有以下几个方法就能开走:方向盘、油门、刹车、排档、离合器 。 奔驰,宝马,兰博基尼,法拉利,奥迪,悍马 这几个具体的车型相当于"类",它们都继承"手动档轿车",我会开手动档轿车,那么这些实现 "手动档轿车" 接口的随便一辆车拿给我,我都能开走。 但是你造了那么一辆车,它没有刹车、没有排档、没有离合器,然后告诉我这是一辆"手动档轿车"(继承"手动档轿车" 接口) , 我拿去,是能开走,但是一旦想停车、换档,才发现没有这几个设备(方法,属性),后果是什么? 没人规定你造的这个车不能叫"手动档轿车",但很显然别人要用开手动档轿车的方法来开你这个车,十有八九会出事故。所以,编译器规定你继承了一个接口,你就必须实现它的所有成员,就像规定你造"手动档轿车",必须把方向盘、油门、刹车、排档、离合器全部装全才行。

  • 相关阅读:
    你所不知道的mfc…mfc项目索引 &mfc调优指南 &mfc vc添加添加子功能指南
    Cu 大彻大悟内存管理 mm (update 0410)
    [转]Linux iostat监测IO状态
    linux virtual memory layout by moniskiller upload [读书笔记]
    河畔找到的 面经笔经
    【转】Linux本地磁盘(硬盘)介绍
    读写UTF8、Unicode文件
    codesmith执行时提示“调用的目标发生了异常”的处理过程经验。
    DB2表信息以及字段信息的表
    iBatis.NET获取resultMap相关数据
  • 原文地址:https://www.cnblogs.com/aiqingqing/p/4413934.html
Copyright © 2011-2022 走看看