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 }
输出的结果均为派生类方法