静态内部类实现mysql连接_Java - 静态内部类
Java語言允許在類中再定義類,這種在其它類內(nèi)部定義的類就叫內(nèi)部類。內(nèi)部類又分為:常規(guī)內(nèi)部類、局部?jī)?nèi)部類、匿名內(nèi)部類和靜態(tài)嵌套類四種。
1、靜態(tài)內(nèi)部類定義
靜態(tài)內(nèi)部類,定義在類中,任何方法外,用static定義;靜態(tài)內(nèi)部類只能訪問外部類的靜態(tài)成員。
生成(new)一個(gè)靜態(tài)內(nèi)部類不需要外部類成員:這是靜態(tài)內(nèi)部類和成員內(nèi)部類的區(qū)別。靜態(tài)內(nèi)部類的對(duì)象可以直接生成:Outer.Inner in=new Outer.Inner();而不需要通過生成外部類對(duì)象來生成。這樣實(shí)際上使靜態(tài)內(nèi)部類成為了一個(gè)頂級(jí)類。可以定義私有靜態(tài)內(nèi)部類。
2、java實(shí)現(xiàn)靜態(tài)內(nèi)部類注意事項(xiàng)
將某個(gè)內(nèi)部類定義為靜態(tài)類,跟將其他類定義為靜態(tài)類的方法基本相同,引用規(guī)則也基本一致。不過其細(xì)節(jié)方面仍然有很大的不同。具體來說,主要有如下幾個(gè)地方要引起注意。
1)一般情況下,如果一個(gè)內(nèi)部類不是被定義成靜態(tài)內(nèi)部類,那么在定義成員變量或者成員方法的時(shí)候,是不能夠被定義成靜態(tài)成員變量與靜態(tài)成員方法的。也就是說,在非靜態(tài)內(nèi)部類中不可以聲明靜態(tài)成員
2)一般非靜態(tài)外部類可以隨意訪問其外部類的成員變量以及方法(包括聲明為private的方法),但是如果一個(gè)內(nèi)部類被聲明為static,則其在訪問包括自身的外部類會(huì)有諸多的限制。靜態(tài)內(nèi)部類不能訪問其外部類的非靜態(tài)成員變量和方法
3)在一個(gè)類中創(chuàng)建非靜態(tài)成員內(nèi)部類的時(shí)候,有一個(gè)強(qiáng)制性的規(guī)定,即內(nèi)部類的實(shí)例一定要綁定在外部類的實(shí)例中。然后要在一個(gè)外部類中定義一個(gè)靜態(tài)的內(nèi)部類,不需要利用關(guān)鍵字new來創(chuàng)建內(nèi)部類的實(shí)例。即在創(chuàng)建靜態(tài)類內(nèi)部對(duì)象時(shí),不需要其外部類的對(duì)象
3、靜態(tài)內(nèi)部類示例
java在實(shí)現(xiàn)LinkedList時(shí)使用了如下內(nèi)部類:
public class LinkedList
extends AbstractSequentialList
implements List, Deque, Cloneable, java.io.Serializable
{
........
private static class Entry {
E element;
Entry next;
Entry previous;
Entry(E element, Entry next, Entry previous) {
this.element = element;
this.next = next;
this.previous = previous;
}
}
private Entry addBefore(E e, Entry entry) {
Entry newEntry = new Entry(e, entry, entry.previous);
newEntry.previous.next = newEntry;
newEntry.next.previous = newEntry;
size++;
modCount++;
return newEntry;
}
........
}
這里即靜態(tài)內(nèi)部類的典型用法
總結(jié)
以上是生活随笔為你收集整理的静态内部类实现mysql连接_Java - 静态内部类的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java正则表达式 匹配()_学习Jav
- 下一篇: dockerfile mysql例子_d