學習啦 > 知識大全 > 知識百科 > 百科知識 > java中什么是內(nèi)部類介紹

java中什么是內(nèi)部類介紹

時間: 歐東艷656 分享

java中什么是內(nèi)部類介紹

  java內(nèi)部類

  內(nèi)部類學習

  所謂內(nèi)部類(Inner Class),顧名思義,就是指定義在另外一個類中的類,我們?yōu)槭裁匆@么做呢?為什么不直接定義它而要在別的類中定義一個內(nèi)部類呢?這樣做主要有如下三個原因:

  1. 內(nèi)部類的方法可以訪問它所在的外部類中的所有域,包括私有型別的;

  2. 對于同一個包中的其它類它是隱藏的;

  3. 匿名的內(nèi)部類可以讓我們很方便的定義事件響應(yīng)(call back),這在GUI編程中很常見;

  一.內(nèi)部類(inner class)如何訪問外部類(outer class)中的域

  因為安全機制的原因,內(nèi)部類通常聲明為private類別,因此,只有在內(nèi)部類所在的外部中才能夠創(chuàng)建內(nèi)部類的對象,對其它類而言它是隱藏的。另外,只有內(nèi)部類才會用到private修飾符,一般的類如果用private修飾符則會報錯。

  下面看如下的代碼:

  Java代碼

  package cn.edu.hust.cm.test;

  import java.awt.event.ActionListener;

  import java.awt.event.ActionEvent;

  import java.awt.Toolkit;

  import javax.swing.JOptionPane;

  import javax.swing.Timer;

  public class InnerClassTest {

  public InnerClassTest() {

  super();

  // TODO Auto-generated constructor stub

  }

  public static void main(String[] args) {

  Court court=new Court(10000,true);

  court.start();

  JOptionPane.showMessageDialog(null,"停止么,CMTobby?");

  System.exit(0);

  }

  }

  class Court{

  public Court(int interval,boolean beep){

  this.interval=interval;

  this.beep=beep;

  }

  public void start(){

  TimerPrinter action=new TimerPrinter();

  Timer t=new Timer(interval,action);

  t.start();

  }

  private int interval;

  private boolean beep;

  private class TimerPrinter implements ActionListener{

  public void actionPerformed(ActionEvent e){

  System.out.println("Cindyelf,would you be my mm?");

  if(beep) Toolkit.getDefaultToolkit().beep();

  }

  }

  }

245917