1. 程式人生 > >Java內部類北京PK10平臺出租的使用小結

Java內部類北京PK10平臺出租的使用小結

依賴 修飾 ava face 賦值 類的靜態成員 結束 new 引用

為什麽要北京PK10平臺出租(www.1159880099.com)QQ1159880099 使用內部類:
使用內部類最吸引人的原因是:每個內部類都能獨立地繼承一個(接口的)實現,所以無論外圍類是否已經繼承了某個(接口的)實現,對於內部類都沒有影響。
內部類:顧名思義就是把類放在某個範圍裏
類可以放在包中
類可以放在文件夾中
類可以放在類中    //內部類
類可以放在方法中    //內部類

一、成員內部類
類中放置內部類,類裏套類,類中類
要使用內部類,就需要在外部類中實例化內部類的對象,然後通過對象打點調用內部類中的方法,通過方法操作內部類數據。
內部類可以直接使用外部類的屬性和方法,就像孫悟空鉆進鐵扇公主肚子裏。

復制代碼
1 public class OuterClass {
2 //外部類中的屬性
3 private int outer_1=100; //私有屬性
4 public int outer_2=10; //公有屬性
5
6 //外部類方法outer_method1
7 public void outer_method1(){
8 System.out.println("outer_method1");
9 InnerClass ic=new InnerClass();
10 //調用內部類中的方法

11 ic.inner_method1();
12 //調用內部類中的私有屬性和公有屬性
13 System.out.println(ic.inner_1+" "+ic.inner_2);
14 }
15
16 //有名的內部類InnerClass
17 class InnerClass{
18 //內部類中的屬性
19 private int inner_1=123; //私有屬性
20 public int inner_2=321; //公有屬性
21 //內部類方法inner_method1
22 public void inner_method1(){
23 //調用外部類中的方法,
24 outer_method1();
25 //調用外部類中的私有屬性和公有屬性
26 System.out.println(outer_1+" "+outer_2);
27 }
28 }
29 }
復制代碼
二、局部內部類
方法中中放置內部類
要使用方法中的內部類,就必須在方法中,內部類定義的下面實例化內部類的對象,然後通過內部類對象打點調用內部類的方法,
內部類的作用域僅限於當前方法,對內部類定義開始到方法結束,作用域消失。
在內部類中可以直接使用外部類中的當前方法中的局部變量,在方法的外面不能使用方法中的內部類。

復制代碼
1 /*
2
方法中放置內部類
3 */
4 public class OuterClass {
5 //外部類中的屬性
6 private int outer_1=100; //私有屬性
7 public int outer_2=10; //公有屬性
8 //外部類中的方法
9 public void outer_method1(){
10 System.out.println("outer_method1()");
11 System.out.println("outer_1"+"outer_2");
12
13 //方法中的內部類
14 class InnerClass{
15 //內部類中的屬性
16 private int inner_1=123; //私有屬性
17 public int inner_2=321; //公有屬性
18 //內部類中的公有方法
19 public void inner_method1(){
20 System.out.println("public method1");
21 System.out.println(outer_1);
22 }
23 //內部類中的私有 方法
24 private void inner_method2(){
25 System.out.println("private method2");
26 System.out.println(outer_1+" "+outer_2);
27 } }
28 //實例化內部類
29 InnerClass ic=new InnerClass();
30 ic.inner_method1();
31 ic.inner_method2();
32 System.out.println(ic.inner_1+" "+ic.inner_2);
33 //作用域到此處結束
34 }
35 }
復制代碼
三、匿名內部類

  1. 匿名內部類是沒有訪問修飾符的。
    2.有時候我為了免去給內部類命名,便傾向於使用匿名內部類,因為它沒有名字。
    3.匿名內部類是沒有構造方法的。因為它連名字都沒有何來構造方法。
    4.當前匿名內部類中實現的方法,只能實現一次,如果還想其他的實現,必須用匿名內部類重新new實現。

復制代碼
1 public class Demo {
2 public void TetMethod1(){
3 //匿名內部類 new 的是CommonPerson的子實現,但沒有類名,把子實現的對象賦值給長輩引用
4 CommonPerson cp=new CommonPerson(){
5 @Override
6 public void study() {
7 }
8 @Override
9 public void eat() {
10 }
11 };
12 }
13 public static void main(String[] args) {
14 //有名內部類
15 class Student implements IPerson{
16 public void study(){}
17 public void eat(){}
18 }
19 Student stu1=new Student();
20 IPerson ip=stu1;
21
22 //匿名內部類
23 IPerson ip1=new IPerson(){
24 public void study(){}
25 public void eat() {}
26 };
27 IPerson ip2=new IPerson(){
28 public void study(){}
29 public void eat() {}
30 };
31 }
32 }
33
34
35 public interface IPerson { //定義的接口IPerson
36
37 public void study();
38 public void eat();
39 }
復制代碼
四、嵌套內部類
嵌套內部類分為靜態內部類和非靜態內部類
1.靜態內部類
1、 它的創建不需要依賴於外部類。
2、 它不能使用任何外圍類的非static成員變量和方法。
2.非靜態內部類
1.它的創建需要依賴於外部類 。
2.在編譯完成之後會隱含地保存著一個引用,該引用是指向創建它的外圍類,可以隨便調用外部類中的成員,不管是靜態的還是非靜態的,相當霸道。

復制代碼
1 public class OuterClass {
2 private String sex;
3 public static String name = "ma";
4 /
5 靜態內部類
6
/
7 static class InnerClass1{
8 / 在靜態內部類中可以存在靜態成員 /
9 public static String name1 = "1_static";
10 public void display(){
11 //靜態內部類只能訪問外圍類的靜態成員變量和方法
12 System.out.println("OuterClass name :" + name);
13 } }
14 /

15 非靜態內部類
16
/
17 class InnerClass2{
18 / 非靜態內部類中不能存在靜態成員 /
19 public String name2 = "2_inner";
20 / 非靜態內部類中可以調用外圍類的任何成員,不管是靜態的還是非靜態的,這就有點霸道了/
21 public void display(){
22 System.out.println("OuterClass name:" + name);
23 }
24 }
25 public void display(){
26 // 外部類訪問靜態內部類
27 System.out.println(InnerClass1.name1);
28 new InnerClass1().display();
29 / 非靜態內部的創建需要依賴於外部類 /
30 OuterClass.InnerClass2 inner2=new OuterClass().new InnerClass2();
31 System.out.println(inner2.name2);
32 inner2.display();
33 }
34 }

Java內部類北京PK10平臺出租的使用小結