zoukankan      html  css  js  c++  java
  • C# 高级编程04----类

    一、类和结构:

      相同点:

      1. 类和结构都是创建对象的模板,包含数据成员和方法成员

      不同点:

      1.在内存中的存储方式:

        1)类是存储在堆内存上的引用类型,结构是存储在栈内存的值类型

        2)结构不支持继承

    二、类的成员:

      类的成员包含:数据成员和函数成员

      1.数据成员:

        数据成员包含:字段、常量、事件成员

      2.函数成员:

      方法参数传递:

        1) 除非特别指定,所有的引用类型都是通过引用传递,所有的值类型都是通过值来传递。引用类型作为参数传递的时候,传递的是引用,修改会影响原始数据;值引用传递的数据的副本,不会影响原有的数据。

        2)ref 参数:可通过ref参数将值参数通过引用传递给方法,目的是为了在值传递时改变原有数据

        3)out参数:out参数可以使一个方法输出多个值,同时在参数前加上out前缀后,传递给方法的变量可以不被初始化。

        4)可选参数:可选参数必须有默认值,并且必须是方法定义的最后的参数

      属性访问器:

        get/set访问器:

          1)get访问器不带任何参数,必须返回属性声明的类型。set默认会有一个value参数

          2)可以为get设置共有的属性访问器(public),为set设置私有或受保护的访问器

    三、弱引用

      当实例化一个类或结构后,只要有代码引用它,就形成了强引用。如果需要使用弱引用可以通过如下代码来创建

    WeakReference mathReference = new WeakReference(new MathTest());
    
    MathTest math;
    
    if(mathReference.IsAlive){
    math = mathReference.Target as MathTest; }

    四、部分类

      使用partial关键字可以把类、结构、接口放在多个文件中。

    五、继承

      1.C#中不支持多重继承,但允许实现多个接口。C# 不支持私有继承,因此基类上没有public或private限定符

      2.在继承中,如果将基类的函数声明为virtual,可以在任何派生类中重写该函数。在函数调用的时候,会调用该类对象的合适的方法。

      3.C#中,函数默认情况下都不是虚函数,除非显式声明为virtual。而在Java中,所有函数都是虚拟的

      4.若需要隐藏基类的某个方法,可使用new关键字

      5.抽象类和抽象方法

        1)使用abstract关键字,可以将一个类或方法声明为抽象类或抽象方法

        2)抽象类不能实例化,抽象函数不能直接实现,必须在费抽象的派生类中重写

      6.密封类和密封方法(断子绝孙类/方法)

        1)使用sealed关键字,可以将一个类或方法声明为密封类/方法

        2)密封类不能被继承,密封方法不能被重写。string就是一个密封类

  • 相关阅读:
    关于在MAC上进行 LARAVEL 环境 Homestead 安装过程记录
    js 贷款计算器
    js 实现阶乘
    js 两点间距离函数
    composer Your requirements could not be resolved to an installable set of packages
    vue 项目优化记录 持续更新...
    vue 项目打包
    vue 真机调试页面出现空白
    vue 真机调试
    谈谈-Android状态栏的编辑
  • 原文地址:https://www.cnblogs.com/kingkangstudy/p/9742117.html
Copyright © 2011-2022 走看看