码迷,mamicode.com
首页 > 其他好文 > 详细

Lesson 3

时间:2015-03-31 06:19:20      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:

 1、关于面向对象的三个重要属性

  Encapsulation(封装):无法直接访问类的成员变量,而是通过一些get set方法,间接访问数据域;

  Polymorphism(多态):静态绑定,动态绑定,通常通过继承来实现多态,通常通过重定义(override)父类的方法来实现,

在c#中,与c++类似(java则不需要),基类function必须定义为virtual才能实现多态动态绑定,从个人理解来说,是因为子类同时可以看做是‘父类’,或子类包含父类,因此父类的引用可以指向子类的实体,并且可调用子类中重定义的函数。

  Inheritance(继承)c#与java都不允许多重继承(c++允许),但可以通过定义接口(interface)来实现多重继承。

2、c#中参数的类型:

(1)数值参数,直接copy,按值传递

(2)引用参数(加ref),同c++中的&运算符

   例:void swap(ref num1,ref num2);

(3)输出参数out(与ref类似),实参传入时可不被赋值,但在函数返回前一定要被赋值。

     注:ref 与 out 在函数声明与调用时都得加上(即形参实参前都得加上)

      技术分享

(4)数组参数 params(只能是一维数组)

   实参可以是同类型的数组名,也可以是若干个同类型的简单变量,并且在函数形参列表中要放在最后

     技术分享

            技术分享

3、c#中的特殊地方:

 (1)引入property(属性)

     [访问修饰符] 类型  属性名

     {

           get{}

           set{}  // set属性带隐含的value值

     }

(2)引入索引器(与属性类似)

     [访问修饰符] 类型 this [ 类型  variable_name]

     {

           get{}

           set{}  // set属性带隐含的value值

     }

3、继承DerivedClass :BaseClass

 (1)单一继承(同java)

 (2)constructor 与 distructor 不被继承

 (3)override 可覆盖基类函数,通过 base 关键字调用访问基类函数

 (4)继承后的构造函数链和析构函数链

       技术分享

         技术分享

         技术分享

         技术分享

          技术分享

 (5)调用基类constructor

      public DerivedClassName (variable a,variable b,variable c):BaseClassName(a,b)

      {

           ......

       }

4、抽象类与interface

   (1)抽象类

    abstract class A{

       abstract public type function()

       {

              //没有函数实体

        }

    }

    class B :A

   {

       public override type function()

       {

              //必须有函数实体

        }

    }

(2)interface  实现多重继承

   [访问修饰符]  interface  InterfaceName

   {

         [访问修饰符] type function()

         //属性,方法只能定义不能实现

    }

   在子类中有两种接口成员的实现:隐式 & 显式

    隐式与java同

    显式带有接口名前缀,同时该方法只能通过接口成员的引用来调用

5、多态

  (1)Base类必须定义为 virtual 函数

  (2)子类 override 父类函数,而不能是 new

   技术分享技术分享技术分享

Lesson 3

标签:

原文地址:http://www.cnblogs.com/1995hxt/p/4379365.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!