列舉:
為什麼要有列舉:
問題:要定義星期幾或性別的變數。該怎麼定義?
列舉就是要讓某個型別的變數的取值只能為若干個固定值中的乙個,否則,編譯器就會報錯。列舉可以讓編譯器在編譯時就可以控制程式中填寫的非法值,普通變數的方式在開發階段是無法實現這一目標的。
用普通類如何實現列舉功能?定義乙個weekday
的類來模擬列舉功能:
1.私有的構造方法
2.每個元素分別用乙個共有的靜態成員變數表示
3.可以有若干個共有的方法或抽象方法
package
day1;
//用普通類如何實現列舉功能?
public
abstract
class
weekday
//2.每個元素用分別用乙個公有的靜態成員變數表示
public
static
final
weekday
mon=
newweekday() };
public
static
final
weekday
sun=
newweekday() };
//4.用抽象方法,所以weekday也要用abstract修飾
public
abstract
weekday nextday();
//抽象方法不能方法實體,即後面不能加大括號
//3.可以有若干個公有的方法或抽象方法 /*
public weekday nextday()
else
}*/
public
string tostring() }
1.成員列表必須在第一行,
如果後面還有**
,最後要加分號
package
day1;
//簡單的列舉
public
class
enumtest1
//列舉是特殊的類.1.可以解除安裝乙個類裡面2.因為是個類,所以沒有()3.如果列舉中有抽象方法,也不需要在列舉上用abstract修飾
public
enum
weekday;
private
weekday(
intday); }
//最複雜的列舉,掌握這個就足夠了
public
enum
trafficlamp },
yellow
(3)
},green
(20) };
private
trafficlamp(){};
private
trafficlamp(
intseconds){};
public
abstract
trafficlamp nextlamp(); }
}總結:
列舉就相當於乙個類,其中也可以定義構造方法,成員變數,普通方法和抽象方法。
列舉元素必須位於列舉體中的最開始部分,列舉元素列表的後要有分號與其他成員分隔。把列舉中的成員方法或變數等放在列舉元素的前面,編譯器報告錯誤。
帶構造方法的列舉:
構造方法必須定義成私有的
如果有多個構造方法,該如何選擇構造方法?
列舉元素mon和mom()的效果一樣,都是呼叫預設的構造方法。
帶有方法的列舉:
定義列舉trafficlamp
實現普通的next方法
實現抽象的next方法:每個元素分別是由列舉的子類來生成的例項物件,這些子類採用類似內部類的方式進行定義。
增加上表示時間的構造方法。
列舉只有乙個成員時,就可以作為一種單例的實現方式。
黑馬程式設計師 列舉
asp.net android ios開發 net培訓 期待與您交流!黑馬程式設計師 列舉 一 列舉是什麼?1.列舉就是要讓其個型別的變數的取值只能是若干個固定的值中的乙個,否則編譯器報錯。列舉可以讓編譯器在編譯時就可以控制源程式中趕寫的非法值,普通變數的方式在開發階段無法實現這一目標。2.當列舉中...
黑馬程式設計師 列舉
asp.net unity開發 net培訓 期待與您交流!黑馬程式設計師 列舉 一 基礎概念及定義 定義 是指將變數的值一一列出來,變數的值只限於列舉出來的值的範圍內。格式 訪問修辭符 enum 列舉名 特性 一種特殊形式的類,和普通類一樣也可以宣告屬性,方法及構造。列舉中宣告的每乙個變數代表乙個例...
黑馬程式設計師 列舉
asp.net unity開發 net培訓 期待與您交流!列舉型別的特點 定義乙個列舉型別並在定義這種型別時指定這個型別的所有值。語法 enum gender 列舉的定義一般和類定義個同乙個級別,這樣,在同乙個命名空間下的所有類都可以使用這個列舉了。用法 gender gender gender.m...