使用postfix進行收發郵件
阿新 • • 發佈:2020-09-20
常用類:
-
內部類
-
object類
-
object類常用方法
-
包裝類
-
string類
-
BigDecimal類
內部類
定義:在類的內部定義一個完整的類
特點
-
編譯之後可以生成獨立的位元組碼檔案
-
內部類可以直接訪問外部類(這個內部類的一層外部)的私有成員,而不破壞封裝性
-
內部類可以為外部內提供必要的內部功能元件
分類:
-
成員內部類
-
靜態內部類
-
區域性內部類
-
匿名內部類
成員內部類
1.性質:
-
在類的內部定義,與例項變數,例項方法同級別的類
-
成員內部類不能包含靜態成員,但能包含靜態常量(新增final關鍵詞)
-
外部類的一個例項部分,建立內部類物件時,必須依賴外部類物件
//依賴外部類建立內部類
package com.yyl.calss;
//外部類
public class Outer {
//例項變數
private String name="adeair";
private int age=20;
//內部類
class Inner{
private String adress="山東";
private String phone="1234";
//方法
public void show(){
//列印外部類屬性
System.out.println(name);
System.out.println(age);
//列印內部類屬性
System.out.println(adress);
System.out.println(phone);
}
}
}
//依賴外部內建立內部類
package com.yyl.calss;
public class TestOuter {
public static void main(String[] args) {
//建立一個外部類物件
Outer outer=new Outer();
//建立一個內部類物件
Outer.Inner inner=outer.new Inner();
//一步到位
//Outer.Inner inner=new Outer().new Inner();
inner.show();
}
}
-
當外部類和內部類存在重名屬性時,會優先訪問內部類屬性
//包括如何訪問重名的外部類屬性
package com.yyl.calss;
//外部類
public class Outer{
//例項變數
private String name="adeair";
private int age=20;
//內部類
class Inner{
private String adress="山東";
private String phone="1234";
private String name="李四";//如果內部類屬性名和外部類屬性名字相同,加上out.this
//方法
public void show(){
//列印外部類屬性
System.out.println(name);//輸出“李四”
System.out.println(Outer.this.name);//輸出“adeair”
System.out.println(age);
//列印內部類屬性
System.out.println(adress);
System.out.println(phone);
}
}
}package com.yyl.calss;
public class TestOuter {
public static void main(String[] args) {
//建立一個外部類物件
Outer outer=new Outer();
//建立一個內部類物件
Outer.Inner inner=outer.new Inner();
//一步到位
//Outer.Inner inner=new Outer().new Inner();
inner.show();
}
}
靜態內部類
1.性質:
-
不依賴外部類物件,可以直接建立或者通過類名訪問,可宣告靜態成員
-
只有內部類才可以用static
-
相當於外部類
package com.yyl.class01;
public class Outer {
private String name="adeair";
private String age="18";
static class Inner{//靜態內部類,和外部類相同
private String adress="山東";
private String phone="1234";
//靜態成員
private static int money=1000;
public void show(){
//呼叫外部類屬性
//首先建立外部類物件
Outer outer=new Outer();
//呼叫外部類物件屬性
System.out.println(outer.name);
System.out.println(outer.age);
//呼叫靜態內部類屬性和方法
System.out.println(adress);
System.out.println(phone);
//呼叫靜態內部類靜態屬性
System.out.println(Inner.money);
}
}
}package com.yyl.class01;
public class TestOuter {
public static void main(String[] args) {
Outer.Inner inner=new Outer.Inner();
//呼叫方法
inner.show();
}
}
區域性內部類
1.性質
-
定義在外部類方法內,作用範圍和建立物件範圍僅限於當前範圍
-
區域性內部類前不能加任何訪問修飾符(相當於方法成員)
-
不能包含static成員,但可以包含final static成員(常量)
-
區域性內部類訪問外部類當前方法中的區域性變數時,因無法保證生命週期與自己相同,變數必須修飾為final
package com.yyl.class03;
public class Outer {
private String name="劉德華";
private int age=35;
public void show(){
//定義區域性變數
final String adress="山東";//finnal可以省略,jdk1.8預設自動新增final
/*為什麼加final
因為函式執行完之後adress變數會消失,
而Inner類和inner物件不會消失,所以
在最後的輸出adress時,adress只有聲
明為final常量才行(因為常量會在執行時
被替代為對應常量,例如adress被替換為
”山東“)*/
//區域性內部類不能加訪問修飾符
class Inner{
private String phone="1234";
private String email="[email protected]";
public void show2(){
//訪問外部類屬性
System.out.println(Outer.this.name);
System.out.println(Outer.this.age);
//訪問內部類
System.out.println(this.phone);
System.out.println(this.email);
//訪問區域性變數,jdk1.7要求變數必須是常量
//jdk 1.8自動新增final
//區域性變數不能修改
System.out.println(adress);
}
}
//建立區域性內部類物件
Inner inner=new Inner();
inner.show2();
}
}package com.yyl.class03;
public class TestOuter {
public static void main(String[] args) {
//不能直接呼叫Inner
//直接呼叫Outer.show沒有輸出
//在class inner外建立區域性內部類物件之後可以直接呼叫函式列印結果
Outer outer=new Outer();
outer.show();
}
} -