欢迎来到天天文库
浏览记录
ID:49999450
大小:123.50 KB
页数:32页
时间:2020-03-07
《从零开始学JAVA第12章_内部类.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第12章内部类以前看到过这样一条新闻,说在一个鸡蛋中发现里面有一个小鸡蛋,这个小鸡蛋同样有蛋清和蛋黄,当时感觉很奇怪的。后来学习Java后,发现在Java中竟然也有这种奇怪的事,那就是内部类。内部类就好像刚提到的鸡蛋中的小鸡蛋一样,包含在另一个类中的。通过本章的学习,会发现内部类还有好多和该小鸡蛋相似的地方。读者通过本章的学习,应该完成如下几个目标。了解什么是非静态内部类和如何进行非静态内部类和外部类之间的访问。了解什么是局部内部类和如何进行局部内部类和外部类之间的访问。了解什么是静态内部类和如何进行静态内部类和外部类之间的访问。了解什么是匿名内部类和如何进行匿名内部类和外部类之
2、间的访问。12.1非静态内部类当一个类作为另一个类的非静态成员,则这个类就是一个非静态内部类。在本节中就来学习如何创建和使用非静态内部类,同时也来讲解如何在内部类中访问外部类和在外部类中如何访问内部类。12.1.1创建非静态内部类创建非静态内部类是很容易的,只需要定义一个类让该类作为其他类的非静态成员。该非静态内部类和成员变量或者成员方法没有区别,同样可以在非静态内部类前面加可以修饰成员的修饰符。创建非静态内部类的基本语法如下所示。classWai{classNei{//内部类成员}//外部类成员}12.1.2在外部类中访问内部类在内部类的程序中,是经常会进行外部类和内部类之间访
3、问的。在外部类中访问内部类是很容易的,只要把内部类看成一个类,然后创建该类的对象,使用对象来调用内部类中的成员就可以了。【范例】示例代码是一个在外部类中访问内部类的程序。01classWai02{03classNei//创建非静态内部类04{05inti=5;//内部类成员06}07publicvoidmyVoid()//外部类成员08{09Nein=newNei();//创建一个内部类对象10intii=n.i;//访问内部类成员11System.out.println("内部类的变量值为:"+ii);12}13}14publicclassNeiBuLei215{16publi
4、cstaticvoidmain(Stringargs[])17{18Waiw=newWai();19w.myVoid();20}21}从程序的第16行主方法讲起,在main方法中,首先创建一个外部类对象,然后访问外部类的成员方法。在外部类的成员方法中,创建了一个内部类对象,然后使用内部类对象调用内部类的成员变量,从而得到结果。编译该程序将产生三个class文件,分别是主类、外部类和内部类。内部类产生的class文件的名称为Wai$Nei.class,在该名称中可以区分该内部类到底是哪一个类的内部类。12.1.3在外部类外访问内部类不但可以在外部类中访问内部类,还可以在外部类外访问
5、内部类。读者肯定会觉得非常难的,要想访问类成员中的成员怎么访问呢。其实在Java中,是很容易做到的。在外部类外访问内部类的基本语法如下所示。Wai.Neiwn=newWai().newNei();使用该方法就能够创建一个内部类对象,使用该内部类对象就可以访问内部类的成员。该方法是不容易理解的,该方法也是可以分为两条语句的。Waiw=newWai();Wai.Neiwn=w.newNei();这样就很容易理解了。首先是创建一个外部类的对象,然后让该外部类对象调用创建一个内部类对象。一个在外部类外访问内部类的程序01classWai02{03classNei//创建非静态内部类04{
6、05inti=5;//内部类成员06intii=6;07}08}09publicclassNeiBuLei310{11publicstaticvoidmain(Stringargs[])12{13Wai.Neiwn1=newWai().newNei();14Waiw=newWai();15Wai.Neiwn2=w.newNei();16System.out.println("内部类中的变量i的值为:"+wn1.i);17System.out.println("内部类中的变量ii的值为:"+wn2.ii);图12-3在外部类外访问内部类18}19}在示例代码中使用了两种方法来从外部
7、类外访问内部类。在外部类外访问内部类时,是不能够直接创建内部类对象的,因为内部类只是外部类的一个成员。所以要想创建内部类对象,首先要创建外部类对象,然后以外部类对象为标识来创建内部类对象。12.1.4在内部类中访问外部类在内部类中访问外部类,就像所有的同一个类中成员互相访问一样,这样是没有限制的,包括将成员声明为private私有的。【范例】示例代码是一个在内部类中访问外部类的程序。示例代码01classWai02{03inti=8;//外部类成员变量04classNei//创建
此文档下载收益归作者所有