【Java基礎】--06.java內部類與列舉類
阿新 • • 發佈:2018-12-26
一、內部類:
在一個類中宣告另一個類。 裡面的類:內部類 外面的類:外部類
1. 成員內部類:
①是類的成員之一。 (屬性、方法、構造器、程式碼塊)
②內部類可以使用四種訪問控制修飾符(public protected default private)
③static final
//建立靜態內部類物件
Person.Mobile pm = new Person.Mobile();
pm.message();
//建立非靜態內部類物件
//Person p = new Person();
//Person.Computer pc = p.new Computer();
Person.Computer pc = new Person().new Computer();
pc.show();
④內部類的外部類擁有相同的特性。
class Person{
Stirng name;
int age;
//成員內部類
public class Computer{
String name;
public void show(){
System.out.println(this.name);
System.out.println(Person.this.name);//區分內部類屬性和外部類屬性
}
}
static class Mobile{
public void message(){
}
}
}
2. 區域性內部類:
//如下方式使用非常少
public void show(){
class InnerClass{}
}
//若某個類僅適用於當前方法時,可以宣告為區域性內部類
public Comparator getComparator(){
class MyComparator implements Comparator{
public int compare(Object o1, Object o2){
return 0;
}
}
return new MyComparator();
}
public Comparator getComparotor(){
//匿名內部類
Comparator com = new Comparator(){
public int compare(Object o1, Object o2){
return 0;
}
};
return com;
}
pulbic Comparator getComparator(){
return new Comparator(){
public int compare(Object o1, Object o2){
return 0;
}
};
}
二、列舉類:
jdk1.5後出的新特性,可以定義有限數量的可窮舉資料集。
簡而言之,當確定一個類有幾個物件時,使用列舉。
1. 自定義列舉類
①私有化構造器
②類內部建立物件
class Season{
//類內部建立物件
public static final Season SPRING = new Season();
public static final Season SUMMER = new Season();
public static final Season AUTUMN = new Season();
public static final Season WINTER = new Season();
//私有化構造器
private Season(){}
}
2. 使用 enum 關鍵字建立列舉類
enum Season{
SPRING,
SUMMER,
AUTUMN,
WINTER;
}
列舉類常用方法:
valueOf(String name) : 根據name列舉類物件名稱,獲取指定的列舉類物件
values() : 獲取當前列舉類中所有列舉類物件的陣列
3. 列舉類實現介面
public enum Season implements MyInterface{
SPRING{
public void show(){
System.out.println("春天");
}
},
SUMMER{
public void show(){
System.out.println("夏天");
}
},
AUTUMN{
public void show(){
System.out.println("秋天");
}
},
WINTER{
public void show(){
System.out.println("冬天");
}
};
// @Override
// public void show() {
// System.out.println("季節");
// }
}