程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> JAVA根底之外部類

JAVA根底之外部類

編輯:關於JAVA

JAVA根底之外部類。本站提示廣大學習愛好者:(JAVA根底之外部類)文章只能為提供參考,不一定能成為您想要的結果。以下是JAVA根底之外部類正文


JAVA根底之外部類

2017-01-13

1、java中的外部類都有什麼?!

    成員外部類

    部分外部類

    匿名外部類

    靜態外部類

2、外部類詳解     •成員外部類

      在一個類的外部再創立一個類,成為外部類

      1)在一個類中運用外部類,可以在外部類中直接存取所在類的公有屬性或辦法

 1 class Outer{
 2     //內部類Outer
 3     private int i = 111 ;//內部類公有變量
 4     class Inner{
 5         //外部類Inner
 6         private int j = 222 ;//外部類公有變量
 7         public void print(){
 8             System.out.println("內部類的公有屬性"+ i);
 9             System.out.println("外部類的公有屬性"+ j);
10         }
11     }
12 }
13 public class ClassDemo5 {
14     public static void main(String[] args) {
15         Outer o = new Outer() ;
16         Outer.Inner i = o.new Inner() ; 
17         i.print() ;
18     }    
19 }

       2)外部類的實例化辦法

import 面向對象根底.Outer.Inner;  
//第一種方式:導入import 面向對象根底.Outer.Inner;包
Outer.Inner i = o.new Inner() ;
 //第二種方式:內部類.外部類 對象名 = 內部類對象.new 外部類

         3)內部類訪問外部類

 1 class Fatch{
 2     //內部類Fatch
 3     public class Student{
 4         //外部類Student
 5         public void show(){
 6             //外部類show()辦法
 7             System.out.println("外部類Student的show()辦法");
 8         }
 9     }
10     public void print(){
11         /**
12          * 內部類不可以直接訪問外部類的屬性或辦法,
13          * 必需創立外部類對象才可以訪問
14          */
15         new Student().show() ;    //運用匿名對象實例化調用外部類的類成員
16         System.out.println("內部類Fatch的print()辦法");
17     }
18 }
19 public class ClassDemo4 {
20     public static void main(String[] args) {
21         Fatch f = new Fatch() ;    //實例化內部類對象
22         f.print() ;    //調用內部類的print()辦法
23     }
24 }

      4)假如內部類和外部類具有相反的成員變量或辦法,外部類默許訪問自己的成員變量或辦法,假如要訪問內部類的成員變量,可以運用 this 關鍵字。

 1 class Outer1 {
 2     //內部類
 3     private int i = 10 ;//內部類公有變量
 4     class Inner1{
 5         //外部類
 6         private int i = 20 ;//外部類公有變量
 7         public void show(){
 8             //外部類辦法
 9             System.out.println("外部類的變量"+ this.i );//運用this關鍵字訪問外部類成員
10             System.out.println("內部類的變量"+ Outer1.this.i);//運用內部類名.this.變量名 來訪問內部類成員
11         }
12     }
13     public void print(){
14         new Inner1().show() ;    //調用外部類辦法
15     }
16 }
17 public class ClassDemo6 {
18     public static void main(String[] args) {
19         new Outer1().print() ;  
20     }
21 
22 }

   

        •留意點:

          »實例化外部類之前必需實例化內部類

          »外部類可以隨意訪問他的內部類成員,但內部類不可以直接訪問外部類的類成員

          »外部類可以被聲明為private 或 protected 權限的訪問

          »外部類對象會依賴於內部類對象,除非曾經存在一個內部類對象,否則類中不會呈現外部類對象

 

    •部分外部類(辦法外部類)

      外部類不只可以在類中停止定義,也可以在類的部分地位停止定義,例如在類的辦法或許恣意的作用域中都可以定義外部類

         1)在內部類的辦法中定義一個辦法外部類

 1 class Demo1{
 2     //內部類Demo
 3      final int I = 10 ;//內部類定義的常量
 4      public void show(){    //內部類的show()辦法
 5          class Inne{        //辦法外部類
 6              int j = 20 ;    //辦法外部類變量
 7              private void inshow() {    //辦法外部類中的inshow()辦法
 8                  System.out.println("內部類常量"+ I );
 9                  System.out.println("辦法外部類變量"+ j );
10             }
11          }
12          Inne in = new Inne()  ;    //實例化外部類對象
13          in.inshow() ;    //調用外部類辦法
14      }
15 }
16 public class ClassDemo7 {
17     public static void main(String[] args) {
18         Demo1 d = new Demo1() ;
19         d.show() ;
20     }
21 }

    留意:假如辦法中的參數需求被傳遞出來,就必需把參數聲明成final類型

 

      •靜態外部類

      假如一個外部類被聲明為static,此外部類就稱為內部類 

       1)靜態外部類可以經過(new 內部類名.外部類.外部類辦法名) ,來調用靜態外部類辦法

 1 class Outer2{
 2     //內部類
 3     private static String str = "張博傑" ;//內部類的靜態變量
 4     static class Inner2{
 5         //運用static聲明 的靜態外部類
 6         public void fun() {
 7             //靜態外部類辦法
 8             System.out.println("內部類的靜態變量"+" "+ str);
 9         }
10     }
11 }
12 public class ClassDemo8 {
13     public static void main(String[] args) {
14         new Outer2.Inner2().fun() ;
15         //靜態外部類可以運用new 內部類名.外部類.外部類辦法名 ,來調用靜態外部類辦法
16     }
17 }

 

       

        •匿名外部類

          匿名外部類也就是沒有名字的外部類,正由於沒有名字,所以匿名外部類只能運用一次,它通常用來簡化代碼編寫.運用匿名外部類還有個前提條件:必需承繼一個父類或完成一個接口

          1)匿名外部類的完成

 1 abstract class A2 {    //籠統類A2
 2     public abstract void eat() ;
 3 }
 4 public class ClassDemo9 {
 5     public static void main(String[] args) {
 6         /**
 7          * 假如A2這個籠統類只用一次,那麼就可一運用匿名外部類來完成
 8          */
 9         A2 a = new A2(){
10             public void eat(){
11                 System.out.println("我要吃飯");
12             }
13         } ;
14         a.eat() ;
15     }
16 }

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved