C#学习日记-接口于类

原创 2016年08月29日 17:13:24

记录一下今天学习的C#中的一些要点:

       C#与C++等语言最大的区别莫过于C#中的接口。接口类似与类,但也有区别,如下:

1、接口类似于类,但接口的成员都没有执行方式,它只是方法、属性、事件和索引的组合而已,并且也只能包含这四种成员;类除了这四种成员之外还可以有别的成员(如字段)。
2、不能实例化一个接口,接口只包括成员的签名;而类可以实例化(abstract类除外)。
3、接口没有构造函数,类有构造函数
4、接口不能进行运算符的重载,类可以进行运算符重载
5、接口的成员没有任何修饰符,其成员总是公共的,而类的成员则可以有修饰符(如:虚拟或者静态)。
6、派生于接口的类必须实现接口中所有成员的执行方式,而从类派生则不然。

一、属性

    C#中提供了属性成员,通过设置一个属性成员可以对对象或类进行某些特性的设置或查询。

设置属性用的代码快为set ,查询为get.示例如下:

public class Date

{

        private int Day =7;

        public: int  day       //设置属性信息,为int类型

        {

             get {return  Day;}

             set

                 {

                        if((value>0)&&(value<8))            //value为一个隐式参数,参数类型是属性的类型
			{
     				Day=value;
			}}}}

}

二、静态函数不对特定实例进行操作,在静态方法中引用this会导致编译错误。

三、结构

结构具有以下特点:

1. 结构是值的类型

2. 向方法传递结构时,结构是通过传值方式传递的,而不是作为引用传递的。

3.结构的实例化可以不使用new运算符。

4. 结构可以声明构造函数,但他们必须带参数。

5. 一个结构不能从另一个结构或类继承。所有结构都直接继承自System.ValueType,后者继承自System.Object。

6. 结构可以实现接口。

7.在结构中初始化实例字段是错误的。

四、类

proteced 的可访问性是只有子类(派生类)才能访问proteced成员,基类和外部代码都不能访问proteced成员。

override 类型表示重写。重写方法只能用于重写基类中的虚函数。不能与new 、static、或者virtual同时使用。

virtual 修饰符不能与private、static、abstract或者override修饰符同时使用。

五、抽象类

     抽象类的定义形式为:

访问修饰符  abstract class  类名:基类或接口

{


}

抽象类的实现需要继承抽象类的子类的对象来实现。

抽象类与非抽象类的区别如下:

1.抽象类不能直接实例化。

2.抽象类中可以包含抽象成员,但非抽象类不可以。

3.抽象类不能被密封。


        抽象类与接口的区别主要如下:

1. 他们的派生类只能继承一个基类,即只能直接继承一个抽象类,但可以继承任意多个接口。

2.抽象类中可以定义成员的实现,但接口中不可以。

3. 抽象类中可以包含字段、构造函数、析构函数、静态成员或常量等,接口中不可以。

4。抽象类中的成员可以是私有的(只要他们不是抽象类的)、受保护的、内部的或受保护的内部成员(受保护的内部成员只能在应用程序的代码或派生类中访问),但接口中的成员必须是公共的。

-----------------------------------------------------------------end------------------------------------------------------------------------


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

C#学习日记26---接口(interface)类型

接口包含类或结构可以实现的一组相关功能的定义例如,使用接口可以在类中包括来自多个源的行为。由于C#语言不支持多重继承,但是可以通过接口来实现多重继承  。简言之,接口只包含了成员(属性、事件、索引...
  • HC666
  • HC666
  • 2015年10月19日 12:27
  • 1419

黑马程序员_学习日记24_面向对象技术高级应用(接口、抽象类与抽象方法、密封类与密封方法)

1、 接口 l        接口的特征: (1)      接口类似于抽象基类:继承接口的任何非抽象类型都必须实现接口的所有成员。 (2)      不能直接实例化接口 (3)     ...

【学习日记】抽象类与接口的“恩怨情仇”

抽象类abstract是一个用来表示抽象的修饰符,可以用来修饰类与对象,抽象与具体是相对的,所以抽象类与抽象方法是不能实例化的。 抽象类和抽象方法的声明形式: abstract class Cl...

Java学习日记之类和对象还要掌握:抽象类和接口

Java中,有一种类天生只能作为父类出现。 这种类就是抽象类。 抽象类是一种特殊的类,他不能生成对象,只能作为父类而存在,抽象类具有高度抽象的特征,为所有的子类提供统一的抽象方法,在子类中抽象类可以一...
  • OASsai
  • OASsai
  • 2015年05月27日 22:09
  • 214

黑马程序员--Java学习日记之集合(collection类与list接口)及泛型概述

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 一,集合概念   之前我们存储大量的对象,可以使用数组:   但数组有两个缺陷:   1.其...
  • Memor_
  • Memor_
  • 2015年06月27日 20:26
  • 437

C#学习日记13---类(Class)的声明与定义

类作为面向对象的灵魂,在C#中有着相当广泛和深入的应用,对类的深度掌握自然是我们学习C#重要的一个环节.有关类的意义上一篇  C#学习日记12---引用类型 中已经给出了,这里就不再重复了.说到 类...
  • HC666
  • HC666
  • 2015年10月05日 21:14
  • 1961

黑马程序员_学习日记5_C#基础归纳总结之派生类的构造函数

---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ---------------------- 派生类的构造函数       我们...

C# MemoryStream类小结 (学习日记 2017-04-29)

MemoryStream类简介 MemoryStream类继承自Stream类,通过MemoryStream创建内存流(存储区放在内存中而不是磁盘),为系统内存提供读写操作。   使用内存流的优点: ...

C#学习日记23---多态性 之 运算符重载、方法重载、抽象类、虚方法

在C#中多态性的定义是:同一操作作用于不同类的实例,不同的类进行不同的解释,最后产生不同的执行结果。换句话说也就是 一个接口,多个功能。 C# 支持2种形式的多态性: 编译时的多态性、运行时的多态...
  • HC666
  • HC666
  • 2015年10月12日 19:49
  • 948

C#学习日记30---泛型类、泛型方法、泛型委托

泛型允许您延迟编写类或方法中的编程元素的数据类型的规范,直到实际在程序中使用它的时候。换句话说,在声明类或方法的时候由于不知道用户要传入什么样类型的参数,所以在传入类型的地方“挖一个坑(“<T>”)"...
  • HC666
  • HC666
  • 2015年10月23日 21:57
  • 2730
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#学习日记-接口于类
举报原因:
原因补充:

(最多只允许输入30个字)