導航:首頁 > 編程語言 > java內部類實現

java內部類實現

發布時間:2023-07-13 01:10:18

A. java 靜態內部類的使用

Java語言允許在類中再定義類,這種在其它類內部定義的類就叫內部類。內部類又分為:常規內部類、局部內部類、匿名內部類和靜態嵌套類四種。

1、靜態內部類定義

靜態內部類,定義在類中,任何方法外,用static定義;靜態內部類只能訪問外部類的靜態成員。

生成(new)一個靜態內部類不需要外部類成員:這是靜態內部類和成員內部類的區別。靜態內部類的對象可以直接生成:Outer.Inner in=new Outer.Inner();而不需要通過生成外部類對象來生成。這樣實際上使靜態內部類成為了一個頂級類。可以定義私有靜態內部類。

2、java實現靜態內部類注意事項

將某個內部類定義為靜態類,跟將其他類定義為靜態類的方法基本相同,引用規則也基本一致。不過其細節方面仍然有很大的不同。具體來說,主要有如下幾個地方要引起注意。

1)一般情況下,如果一個內部類不是被定義成靜態內部類,那麼在定義成員變數或者成員方法的時候,是不能夠被定義成靜態成員變數與靜態成員方法的。也就是說,在非靜態內部類中不可以聲明靜態成員

2)一般非靜態外部類可以隨意訪問其外部類的成員變數以及方法(包括聲明為private的方法),但是如果一個內部類被聲明為static,則其在訪問包括自身的外部類會有諸多的限制。靜態內部類不能訪問其外部類的非靜態成員變數和方法

3)在一個類中創建非靜態成員內部類的時候,有一個強制性的規定,即內部類的實例一定要綁定在外部類的實例中。然後要在一個外部類中定義一個靜態的內部類,不需要利用關鍵字new來創建內部類的實例。即在創建靜態類內部對象時,不需要其外部類的對象

3、靜態內部類示例

java在實現LinkedList時使用了如下內部類:

public class LinkedList<E>

extends AbstractSequentialList<E>

implements List<E>, Deque<E>, Cloneable, java.io.Serializable

{

........

private static class Entry<E> {

E element;

Entry<E> next;

Entry<E> previous;

Entry(E element, Entry<E> next, Entry<E> previous) {

this.element = element;

this.next = next;

this.previous = previous;

}

}

private Entry<E> addBefore(E e, Entry<E> entry) {

Entry<E> newEntry = new Entry<E>(e, entry, entry.previous);

newEntry.previous.next = newEntry;

newEntry.next.previous = newEntry;

size++;

modCount++;

return newEntry;

}

........

}

這里即靜態內部類的典型用法

B. 如何實例化 java 內部類

假設外部類叫Out,內部類叫In,那麼我們可以使用Out.In in = new Out().new In()來實例化內部類的對象,具回體示例代碼如下:

class Out {
private int age = 12;

class In {
private int age = 13;
public void print() {
int age = 14;
System.out.println("局部答變數:" + age);
System.out.println("內部類變數:" + this.age);
System.out.println("外部類變數:" + Out.this.age);
}
}
}

public class Demo {
public static void main(String[] args) {
Out.In in = new Out().new In();
in.print();
}
}

C. java內部調用內部方法的問題

classt
{
publicstaticvoidc()
{
jdf();//這樣是可以的,方法中不能定義方法,只能調用方法,內部類除外
}
publicstaticvoidjdf()
{
System.out.println("你好");
}

}

D. 使用內部類讓Java實現「多繼承」

使用內部類讓Java實現 多繼承

眾所周知 Java沒有像c++那樣支持多繼承 但是我們可以使用介面或內部類來模擬實現多繼承

我們使用內部類來實現一個繼承自消費者笑禪 又繼承自生產者的派生類

實際上Java之所以設計出內部類這個概念 一方面是為了更好的封裝性 另一方面就是藉助內部類模擬實現多繼承

首先我們定義一個消費者抽象基類

view plainprint?

/** * Consumer Class *@author androidyue *Last Modified 上午 */ public abstract class Consumer { protected float buyPrice protected abstract void buyGoods() }

跡升吵以下是生產者抽象基類

view plainprint?

/** * Procer Class *@author androidyue *Last Modified 上午 */ public abstract class Procer { protected float cost protected abstract void proce() }

使用內部類實現 多繼承 的派生子類

view plainprint?姿侍

/** *Java實現 多繼承

*@author androidyue *Last Modified 上午 */ public class InnerClassDemo extends Procer { private ConsumerBuyer buyer

public void desribeMySelf(){ System out println( 使用Java模擬多繼承 ) this proce() this buyer=new ConsumerBuyer() this buyer buyGoods()

}

@Override protected void proce() { st= f System out println( 我是生產者 我以每件 +st+ RMB的成本生產一件產品 然後以 元價格對外出售 ) }

class ConsumerBuyer extends Consumer{

@Override protected void buyGoods() { this buyPrice= f System out println( 我是消費者 我以 +this buyPrice+ RMB 買了一件售價 元的商品 不信吧 因為我也是生產者!^_^ )

}

}

}

程序入口調用

view plainprint?

/** * the entrance of application *@author androidyue *Last Modified 上午 */ public class AppMain { public static void main(String[] args){ InnerClassDemo demo=new InnerClassDemo() demo desribeMySelf() }

lishixin/Article/program/Java/hx/201311/25912

E. Java 類中類 是怎麼實現的

有class修飾符,用來創建一個類,其中有成員函數和成員變數。通過new一個對象出來,通過對象來實現這個類

閱讀全文

與java內部類實現相關的資料

熱點內容
網路評選一般有哪些 瀏覽:476
2021三支一扶報名數據在哪裡看 瀏覽:914
網路未備案怎麼打得開 瀏覽:987
計算機程序用什麼編程語言 瀏覽:324
linux入門常用命令 瀏覽:497
江寧區哪裡有數控編程培訓 瀏覽:778
java寫一個shape形狀類 瀏覽:744
win7如何設置word背景顏色 瀏覽:484
如何創造電腦編程語言 瀏覽:56
昂達平板電腦圖形密碼忘記怎麼辦 瀏覽:92
組織文件內容是什麼 瀏覽:183
0基礎如何學習智能編程 瀏覽:366
java程序員全攻略下載 瀏覽:715
網路逆向教程 瀏覽:135
iso文件如何重裝系統 瀏覽:750
ghost鏡像文件路徑如何恢復 瀏覽:832
搭建網站需要多少錢啊 瀏覽:599
編程貓怎麼設置背景亮度 瀏覽:177
qq文件破損 瀏覽:414
javapoi配置 瀏覽:608

友情鏈接