📄 介绍嵌套类和内部类 -java面向对象 - it电子教育门户 高端java培训.htm
字号:
{System.out.println("display: outer_x = " + outer_x); }}}
</FONT></P>
<P><FONT face=Verdana>class InnerClassDemo {<BR>public static
void main(String args[]) { <BR>Outer outer = new
Outer();<BR>outer.test();<BR>}<BR>}
<BR>该程序的输出如下所示:<BR>display: outer_x =
100<BR> 在本程序中,内部类Inner 定义在Outer
类的范围之内。因此,在Inner 类之内的任何代码可以直接访问变量outer_x 。实例方法display()
定义在Inner 的内部,该方法以标准的输出流显示 outer_x 。InnerClassDemo 的main( )
方法创建类Outer 的一个实例并调用它的test( )方法。创建类Inner 和display()
方法的一个实例的方法被调用。<BR> 认识到Inner 类只有在类Outer
的范围内才是可知的是很重要的。如果在类Outer 之外的任何代码试图实例化Inner 类,Java
编译器会产生一条错误消息。总体来说,一个嵌套类和其他任何另外的编程元素没有什么不同:它仅仅在它的包围范围内是可知的。<BR>
我们解释过,一个内部类可以访问它的包围类的成员,但是反过来就不成立了。内部类的成员只有在内部类的范围之内是可知的,而且不能被外部类使用。例如:<BR>//
This program will not compile.<BR>class Outer {<BR>int outer_x
= 100; <BR>void test() { <BR>Inner inner = new
Inner();<BR>inner.display();<BR>} </FONT></P>
<P><FONT face=Verdana>// this is an inner class<BR>class Inner
{ <BR>int y = 10; // y is local to Inner<BR>void display()
{<BR>System.out.println("display: outer_x = " + outer_x);
<BR>}<BR>}<BR>void showy() { System.out.println(y); // error,y
not known here!}} <BR>class InnerClassDemo {<BR>public static
void main(String args[]) { <BR>Outer outer = new
Outer();<BR>outer.test();<BR>}<BR>} <BR>
这里,y是作为Inner 的一个实例变量来声明的。这样对于该类的外部它就是不可知的,因此不能被showy()
使用。<BR>
尽管我们强调嵌套类在它的外部类的范围之内声明,但在几个程序块的范围之内定义内部类是可能的。例如,在由方法定义的块中,或甚至在for
循环体内部,你也可以定义嵌套类,如下面的程序所示:<BR>// Define an inner class within a
for loop.<BR>class Outer {<BR>int outer_x = 100;<BR>void
test() { for(int i=0; i<10; i++) { class Inner { void
display() {System.out.println("display: outer_x = " +
outer_x); <BR>}<BR>}<BR>Inner inner = new Inner();
<BR>inner.display();<BR>}<BR>}<BR>} <BR>class InnerClassDemo
{<BR>public static void main(String args[]) { <BR>Outer outer
= new Outer();<BR>outer.test();<BR>}<BR>}
<BR>该程序的这个版本的输出如下所示。<BR>display: outer_x = 100<BR>display:
outer_x = 100<BR>display: outer_x = 100 <BR>display: outer_x =
100<BR>display: outer_x = 100<BR>display: outer_x =
100<BR>display: outer_x = 100<BR>display: outer_x =
100<BR>display: outer_x = 100<BR>display: outer_x = 100
<BR> 尽管嵌套类在日常的大多数编程中不使用,但当处理applet
(小应用程序)时是特别有帮助的。在第20章中我们将继续嵌套类的话题。在那里你将看到对于某些类型的事件内部类如何被用来简化代码。你也将了解匿名内部类(anonymous
inner classes),它是一个没有名字的内部类。<BR>最后一点:嵌套类在Java
的最初的1.0版本中是不允许的。直到Java 1.1
中才添加了嵌套类。</FONT></P></DIV></SPAN></TD></TR>
<TR>
<TD width="71%"> </TD>
<TD width="29%">【 <A
href="http://www.mldn.cn/print.jtml?articleid=1410">打印</A> 】【
<A
href="http://www.mldn.cn/member/favlist.jtml?action=add&postid=1410">收藏</A>
】【 <A href="http://www.mldn.cn/email.jtml?articleid=1410"
target=_blank>推荐</A> 】 </TD></TR>
<TR>
<TD colSpan=2>
<TABLE cellSpacing=3 cellPadding=0 width="100%" align=center
bgColor=#ffffff border=0>
<TBODY>
<TR height=25>
<TD align=middle width="33%"><IMG height=95 alt=java视频教程
src="介绍嵌套类和内部类 -JAVA面向对象 - IT电子教育门户 高端JAVA培训.files/javavideo.gif"
width=642></TD></TR>
<TR>
<TD class=content-table vAlign=top align=middle>
<TABLE>
<TBODY>
<TR>
<TD>
<TABLE>
<TBODY>
<TR>
<TD><A
href="http://www.mldn.cn/articleview/2007-8-21/article_view_2251.htm"
rel=external><IMG class=midImg alt=struts2.0入门视频
src="介绍嵌套类和内部类 -JAVA面向对象 - IT电子教育门户 高端JAVA培训.files/struts2.gif"
width=90></A></TD></TR>
<TR>
<TD style="HEIGHT: 22px"> <A
title=struts2.0入门视频
href="http://www.mldn.cn/articleview/2007-8-21/article_view_2251.htm"
rel=external>struts2.0入门视频</A></TD></TR></TBODY></TABLE></TD>
<TD>
<TABLE>
<TBODY>
<TR>
<TD><A
href="http://www.mldn.cn/articleview/2007-6-15/article_view_2141.htm"
rel=external><IMG class=midImg
alt=JAVAEE学习流程和学习方法
src="介绍嵌套类和内部类 -JAVA面向对象 - IT电子教育门户 高端JAVA培训.files/j2eejc.gif"
width=90></A></TD></TR>
<TR>
<TD style="HEIGHT: 22px"> <A
title=JAVAEE学习流程和学习方法
href="http://www.mldn.cn/articleview/2007-6-15/article_view_2141.htm"
rel=external>JAVAEE学习流程和学习方..</A></TD></TR></TBODY></TABLE></TD>
<TD>
<TABLE>
<TBODY>
<TR>
<TD><A
href="http://www.mldn.cn/articleview/2007-6-5/article_view_2091.htm"
rel=external><IMG class=midImg
alt=1-Java介绍及JDK配置
src="介绍嵌套类和内部类 -JAVA面向对象 - IT电子教育门户 高端JAVA培训.files/javase.gif"
width=90></A></TD></TR>
<TR>
<TD style="HEIGHT: 22px"> <A
title=1-Java介绍及JDK配置
href="http://www.mldn.cn/articleview/2007-6-5/article_view_2091.htm"
rel=external>1-Java介绍及JDK配置..</A></TD></TR></TBODY></TABLE></TD>
<TD>
<TABLE>
<TBODY>
<TR>
<TD><A
href="http://www.mldn.cn/articleview/2007-4-19/article_view_2012.htm"
rel=external><IMG class=midImg alt=Oracle中的多表连接
src="介绍嵌套类和内部类 -JAVA面向对象 - IT电子教育门户 高端JAVA培训.files/Oracle.gif"
width=90></A></TD></TR>
<TR>
<TD style="HEIGHT: 22px"> <A
title=Oracle中的多表连接
href="http://www.mldn.cn/articleview/2007-4-19/article_view_2012.htm"
rel=external>Oracle中的多表连接</A></TD></TR></TBODY></TABLE></TD>
<TD>
<TABLE>
<TBODY>
<TR>
<TD><A
href="http://www.mldn.cn/articleview/2007-4-11/article_view_1978.htm"
rel=external><IMG class=midImg
alt=Struts中logic标签的使用
src="介绍嵌套类和内部类 -JAVA面向对象 - IT电子教育门户 高端JAVA培训.files/struts.gif"
width=90></A></TD></TR>
<TR>
<TD style="HEIGHT: 22px"> <A
title=Struts中logic标签的使用
href="http://www.mldn.cn/articleview/2007-4-11/article_view_1978.htm"
rel=external>Struts中logic标签..</A></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD></TR>
<TR>
<TD colSpan=2>
<TABLE cellSpacing=3 cellPadding=0 width="100%" align=center
bgColor=#ffffff border=0>
<TBODY>
<TR height=25>
<TD align=middle width="33%" bgColor=#aac4c4><FONT
color=#ffffff>相关文章</FONT></TD>
<TD align=middle width="33%" bgColor=#aac4c4><FONT
color=#ffffff>推荐文章</FONT></TD></TR>
<TR>
<TD class=content-table vAlign=top>·暂无</TD>
<TD class=content-table vAlign=top>
<TABLE>
<TBODY>
<TR>
<TD><A
href="http://www.mldn.cn/articleview/2007-11-7/article_view_2650.htm">垃圾收集器与Java程序的性能</A></TD></TR>
<TR>
<TD><A
href="http://www.mldn.cn/articleview/2007-11-7/article_view_2652.htm">详细解析Java中抽象类和接口的区别
..</A></TD></TR>
<TR>
<TD><A
href="http://www.mldn.cn/articleview/2007-11-6/article_view_2646.htm">如何实现javabean属性拷贝</A></TD></TR>
<TR>
<TD><A
href="http://www.mldn.cn/articleview/2007-11-2/article_view_2624.htm">讲述java语言中内部类的研究</A></TD></TR>
<TR>
<TD><A
href="http://www.mldn.cn/articleview/2007-11-1/article_view_2614.htm">内部类和匿名类优化Java代码</A></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD>
<TD vAlign=top width=220>
<TABLE cellSpacing=3 cellPadding=0 width="98%" align=center
bgColor=#ffffff border=0>
<TBODY>
<TR height=25>
<TD align=middle width="33%" bgColor=#aac4c4><FONT
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -