zoukankan      html  css  js  c++  java
  • 20141014C#面向对象抽象方法,抽象类,接口

    里氏代换原则。可以用子类的对象替代父类的对象。

    抽象依赖原则。依赖——形参,关联

    一、抽象方法:

    在一些父类中,某些行为不是非常明确,因此无法用代码来具体实现,但是类必须具备此方法,因此把这样的方法定义为抽象方法。abstract

    特点:1.只声明,不实现。2.加abstract关键字。

    eg:

     1 public abstract class Ren //类中含有抽象方法,此类也必须是抽象类。
     2 {
     3   public abstract void Eat(); //以分号结束,没有花括号
     4 }
     5 class Chinese:Ren
     6 { 
     7   public override void Eat()
     8   {
     9     Console.WriteLine("用筷子吃饭。");
    10   }
    11 }

    二、抽象类:

    无法被实例化的类。关键词是abstract 。凡是带有abstract关键词的类,都无法new 出来。

    凡是带有抽象方法的类,肯定是抽象类;抽象类却不一定包含抽象方法。

    构造方法、静态成员方法不能被声明为抽象方法。

    一个非抽象类必须实现从父类继承来的所有抽象方法。

    不能创建抽象类的实例。

    三、接口 interface: 极度抽象的类。无成员变量,无实例方法,无实例属性,只有抽象方法或抽象属性。接口就是一个规则。

    接口用interface关键词来定义。

    接口中的方法都是抽象的,因此无需加abstract。

    接口中的方法都是公有的,无需加访问修饰符。

    生活中的例子:标准,协议

    接口可以继承父接口

    一个类可以实现(继承)多个接口

    eg:

     1    public interface IUSB
     2     {
     3         void Start();
     4         void Stop();
     5     }
     6     public class Camera : IUSB
     7     {
     8         public void Start()
     9         {
    10             Console.WriteLine("打开摄像头了");
    11         }
    12 
    13         public void Stop()
    14         {
    15             Console.WriteLine("摄像头关闭了");
    16         }
    17     }
    18 
    19     public class UDisk : IUSB
    20     {
    21         public void Start()
    22         {
    23             Console.WriteLine("U盘启动了");
    24         }
    25 
    26         public void Stop()
    27         {
    28             Console.WriteLine("U盘退出了");
    29         }
    30     }
    31 
    32     public class Computer
    33     {
    34         public void CheckUSB(IUSB usb)
    35         {
    36             usb.Start();
    37         }
    38         public void CloseUSB(IUSB usb)
    39         {
    40             usb.Stop();
    41         }
    42     }

    命名空间:相当于一个包。对类进行分类管理的工具。

    一般的命名规则:公司名.项目名.模块名

    项目名:用给人类,标识出这个项目是做什么的

    程序集:程序编译出来的.exe或.dll文件。程序集的名字就是编译出来的EXE或dll的名字。

  • 相关阅读:
    poj 3616 Milking Time
    poj 3176 Cow Bowling
    poj 2229 Sumsets
    poj 2385 Apple Catching
    poj 3280 Cheapest Palindrome
    hdu 1530 Maximum Clique
    hdu 1102 Constructing Roads
    codeforces 592B The Monster and the Squirrel
    CDOJ 1221 Ancient Go
    hdu 1151 Air Raid(二分图最小路径覆盖)
  • 原文地址:https://www.cnblogs.com/zsmj001/p/4025366.html
Copyright © 2011-2022 走看看