• Lesson 3


     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

      

  • 相关阅读:
    当你不知道今天星期几,不妨在编辑器写下这段代码
    自定义注解!绝对是程序员装逼的利器!!
    什么是可串行化MVCC
    Jetpack新成员,一篇文章带你玩转Hilt和依赖注入
    连接真机开发安卓(Android)移动app MUI框架 添加购物车等——混合式开发(四)
    从前世今生聊一聊,大厂为啥亲睐时序数据库
    工作五年,面试官说我只会CRUD!竟然只给我10K!
    bootstrap知识总结
    数据处理的两个基本问题05 零基础入门学习汇编语言42
    转移指令的原理02 零基础入门学习汇编语言44
  • 原文地址:https://www.cnblogs.com/1995hxt/p/4379365.html
Copyright © 2020-2023  润新知