导航:首页 > 编程语言 > java内部类实现

java内部类实现

发布时间:2023-08-09 22:53:53

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;

}

........

}

这里即静态内部类的典型用法

⑵ java内部调用内部方法的问题

Java内部调用内部方法主要是通过内部类实现。Java内部类分两种,成员内部类和方法内部类。

代码如下:

1.成员内部类
/**
*成员内部类
*/
publicclassOuter{
privateintouter=1;

classInner{
publicvoidshow(){
System.out.println("outer="+outer);
}
}

publicstaticvoidmain(String[]args){
Outer.Innerin=newOuter().newInner();
in.show();

}

}

2.方法内部类
/**
*方法内部类
*
*/
publicclassOuter2{
privateintouter=1;

publicvoidshowOut(){

classInner{
publicvoidshow(){
System.out.println("outer="+outer);
}
}
newInner().show();
}

publicstaticvoidmain(String[]args){
Outer2in=newOuter2();
in.showOut();

}

⑶ Java 类中类 是怎么实现的

有class修饰符,用来创建一个类,其中有成员函数和成员变量。通过new一个对象出来,通过对象来实现这个类

阅读全文

与java内部类实现相关的资料

热点内容
python中numpy模块安装 浏览:356
安卓虚拟机linux 浏览:567
安卓怎么分享五g网络 浏览:671
什么型号的板子能上服务器内存 浏览:397
androidapk图标设置 浏览:42
最早提出分数运算法的着作 浏览:922
安卓邮箱怎么保存照片 浏览:269
hdfspythonapi 浏览:851
qt如何搭建web服务器 浏览:58
程序员红包算法 浏览:792
亚马逊安全的更换云服务器 浏览:728
服务器线程数怎么设置 浏览:605
考研词汇红宝书2019pdf 浏览:981
如何利用安卓手机wifi修改密码 浏览:373
辞海分册pdf 浏览:935
安卓系统页面怎么调 浏览:775
压缩文件的用法 浏览:34
如何用浏览器访问服务器地址 浏览:207
soft编译器 浏览:113
三轴车床的编程指令 浏览:71