• 结构和类的区别


    1、结构用于小的数据类型,所有结构派生自System.ValueType类,不能再继承其它基类,同时也不能被继承。

    而类一般用于大的数据类型如人类,动物类等,支持继承。

    2、结构和类一样可以有成员方法,字段。
    3、结构中的成员字段不能被显式初始化,要通过默认无参构造器初始化,而类的字段可以显示初始化,默认由无参构造器初始化。

    4、结构的无参构造器总是存在,无论是否手动添加了其它构造器,而类只要手工添加任一个构造器,就不会再有默认的无参构造器,当然可以自行添加,用于成员字段的初始化。

    5、结构可以采用两种方式声明(和枚举enum相同):
         第一种不使用new,和声明一般数据类型如int、string一样,假设有一个结构MyStruct,创建一个实例如下:

         MyStruct struct1;
         第二种采用和实例化类一样的方式如MyStructnn=new MyStruct()。

    6、 结构不能显式的包含无参构造器,也即是说不能手工添加一个无参构造器,而类在没有任何构造器的情况下会自动生成一个无参构造器,同样也可以手工添加一个无参构造器。

    7、 结构不支持继承,任何其它结构或类不能由结构派生,而类则可以。

    8、结构支持接口继承,不支持实现继承,就是说结构可以继承自某一个接口,但不能继承自某一个类或结构。

     9、class与struct内部的成员的访问权限默认都是private私有的,这与C++不同,C++中class内部成员的默认访问权限是private私有的,而struct内部的成员访问权限默认是public公有的。

    10、如果仅是调用struct内部的公有成员字段,则不使用New的方式创建实例就行了如MyStruct struct1;

    而如果要调用struct内部的公有方法则必须使用New来创建struct实例,否则会出现编译错误。

  • 相关阅读:
    golang 数据结构 优先队列(堆)
    leetcode刷题笔记5210题 球会落何处
    leetcode刷题笔记5638题 吃苹果的最大数目
    leetcode刷题笔记5637题 判断字符串的两半是否相似
    剑指 Offer 28. 对称的二叉树
    剑指 Offer 27. 二叉树的镜像
    剑指 Offer 26. 树的子结构
    剑指 Offer 25. 合并两个排序的链表
    剑指 Offer 24. 反转链表
    剑指 Offer 22. 链表中倒数第k个节点
  • 原文地址:https://www.cnblogs.com/liancs/p/3879362.html
Copyright © 2020-2023  润新知