• 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就是一个密封类

  • 相关阅读:
    leetcode第四题
    解决Hystrix主线程结束,子线程拿不到request
    RabbitMQ如何保证消息的顺序性+解决消息积压+设计消息队列中间件
    RabbitMQ 如何保证消息不丢失?
    redis布隆过滤器的使用
    PageHelper自定义count
    mysqlbinlog 工具分析binlog日志
    linuxubuntu常用命令
    MySQL 常用命令
    Ubuntu 16.04 安装 Apache, MySQL, PHP7
  • 原文地址:https://www.cnblogs.com/kingkangstudy/p/9742117.html
Copyright © 2020-2023  润新知