深入理解类

1.类成员:数据成员:字段,常量

       函数成员:方法,属性,构造函数,析构函数,运算符,索引,事件

类的结构:[特性] [修饰符]  核心声明

修饰符:Public,Private,Static,Const

2.字段:实例字段,静态字段,类的静态成员没有实例也可以访问。

心得:程序可以以理解为CPU,栈可以理解为内存,堆可以理解为外存。CPU一般都需要从内存中读取数据,但也可以直接从外存中读取。声明相当于在内存或者外存中一段空间,并命名;实例化相当将内存空间的大小范围进一步确定,或者将外存的数据大小信息放入内存中。

3.属性:属性声明和访问器,属性和关联字段,只读和只写属性,自动实现属性和静态属性

注解:属性和他们的后备字段的几种命名约定

 1 //Camel 大小写风格:复合标识符中每个单词的首字母大写,除了第一个单词
 2 //Pascal大小写风格:复合标识符的每个单词首字母都是大写
 3 get读;set写
 4 public class C : MonoBehaviour {
 5     //第一种约定:两个名称使用相同的内容,但字段使用Camel大小写,属性使用Pascal大小写
 6     private int firstField;
 7     public  int FirstField
 8     {
 9         get { return firstField; }
10         set { firstField = value; }
11     }
12     //第二种约定:字段使用Camel大小写,并以下划线开始,属性使用Pascal大小写
13     private int _secondField;
14     public  int SecondField
15     {
16         get { return _secondField; }
17         set { _secondField = value; }
18     }
19 }

 4.构造函数:带参数的构造函数,默认构造函数,对象初始化语句

 5.readonly,this,partial和索引器

6.屏蔽基类成员

1     class SomeClass
2     {
3         public string Field;
4     }
5     class OtherClass : SomeClass
6     {
7         new public string Field;//用同样的名字屏蔽基类成员
8     }

7.使用基类的引用

 1 namespace ConsoleApp2
 2 {
 3     class SomeClass
 4     {
 5         public void Field() { }
 6     }
 7     class OtherClass : SomeClass
 8     {
 9         new public void Field() { }
10     }
11 
12     class Program
13     {
14         static void Main()
15         {
16             OtherClass a = new OtherClass();
17             SomeClass b = (OtherClass)a;//派生类的范围大于基类,可将派生类强制转换为基类
18 
19             a.Field();
20             b.Field();
21 
22         }
23     }
24 }

8.虚方法和派生类方法

 1 namespace ConsoleApp2
 2 {
 3     class Class1
 4     {
 5         virtual public void Field()
 6         {
 7             Console.WriteLine("基类方法");
 8         }
 9     }
10     class Class11 : Class1
11     {
12         override public void Field()
13         {
14             Console.WriteLine("派生类方法");
15         }
16     }
17 
18     class Program
19     {
20         static void Main()
21         {
22             Class11 a = new Class11();
23             Class1 b = (Class11)a;
24 
25             a.Field();
26             b.Field();
27             Console.ReadLine();
28         }
29     }
30     
31 }

输出的结果均为派生类方法
原文地址:https://www.cnblogs.com/krystalstar/p/9679863.html