static:
類成員:
類成員由static關(guān)鍵字修飾
特點:
可以在未創(chuàng)建類的對象前就用類名直接調(diào)用類成員
類變量:
由static關(guān)鍵字修飾的字段
特點:
隸屬于類模板(共用)
直接使用類名.訪問
注意:無法使用對象引用.
類方法:
由static關(guān)鍵字修飾的方法
特點:
隸屬于類模板
直接使用類名.訪問
注意:
無法使用對象引用.
方法中不能使用this、base
靜態(tài)構(gòu)造函數(shù):
static 類名(){}
用處:初始化static變量
特點:
每個類中都有此方法
不可被直接調(diào)用
使用類時自動執(zhí)行
運行期間只執(zhí)行一次
靜態(tài)類:
由static修飾的類
特點:
不能實例化(沒有對象)
共享
使用類名.訪問內(nèi)容
原則:
靜態(tài)類中的所有成員必須是靜態(tài)的
示例:
public static class StaticTestClass
{
???public static int n = 0;
???public static void Add()
???{
???????n++;
???}
}
類內(nèi)部調(diào)用關(guān)系
一.多類的加載次序
1.優(yōu)先加載Main所在的類
2.執(zhí)行Main方法
3.執(zhí)行過程中使用到哪個類 加載哪個類
二.單個類的加載次序
1.加載類中的靜態(tài)變量 靜態(tài)方法
2.執(zhí)行靜態(tài)構(gòu)造為靜態(tài)變量進行初期化
3.當產(chǎn)生對象new對象時 分配成員變量和成員方法到對象中
注意:
非靜態(tài)的可以調(diào)用靜態(tài)和非靜態(tài)
靜態(tài)的只能調(diào)用靜態(tài)的
abstract:
抽象類:
抽象的意義:
描述抽象的概念,規(guī)定必須實現(xiàn)的方法的統(tǒng)一接口
用abstract關(guān)鍵字來修飾的類
abstract class AbstractClass
{
}
特點:
必須被繼承才可使用
不能被直接實例化
和密封類(sealed類)正好相反
抽象方法:
用abstract來修飾的方法
abstract returnType AbstractMethod ( [paramlist] );
特點:
必須被重寫(override)
只有方法頭,沒有方法體
抽象方法必須在抽象類中
規(guī)定:
1.抽象類中不一定包含抽象方法
2.有抽象方法的類必定是抽象類
3.抽象方法只是聲明,沒有方法的實現(xiàn)
4.構(gòu)造方法、類方法不能聲明為抽象方法
5.子類必須實現(xiàn)抽象方法,除非子類也是抽象類
6.抽象類中不一定全是抽象方法 可以有一部分具體實現(xiàn)
sealed:
被sealed修飾的類被稱為密封類
sealed class SealedClass
{
}
特性:密封類不能被繼承
被sealed修飾的方法被稱為密封方法
sealed override returnType SealedMethod([paramList])
{
}
特性:
密封方法會重寫基類中的方法
密封方法無法被重寫
注意:必須始終與override一起使用
被sealed修飾的屬性被稱為密封屬性
sealed override returnType Property
{
set ???
{
}
get
{
}
}
特性:
密封屬性會覆蓋基類中的屬性
密封屬性無法被覆蓋
注意:必須始終與override一起使用
const&readonly:
const :
定義的是靜態(tài)常量
聲明的同時賦值
運行期間不能改變它的值
屬于編譯時常量
不能用new初始化
const一般修飾值類型和String
Readonly :
是只讀變量
屬于運行時變量
可以在類constructor里改變它的值
不能作用于局部變量
初始化時機:
1.聲明的同時賦值
2.靜態(tài)變量的話 在靜態(tài)構(gòu)造中初始化
3.非靜態(tài)變量的話 在非靜態(tài)構(gòu)造中初始化
小結(jié):
主要是幾個重要關(guān)鍵字的使用:
static、abstract、sealed、const、readonly
學習的時候要從這幾個關(guān)鍵字可以修飾的內(nèi)容分類學習
static可以修飾類、方法、變量
abstract可以修飾類、方法
sealed可以修飾類、方法
const可以修飾變量(通常修飾值類型+String)
readonly可以修飾變量(通常修飾引用類型)