内部类的定义与调用_第1页
内部类的定义与调用_第2页
内部类的定义与调用_第3页
内部类的定义与调用_第4页
内部类的定义与调用_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

内部类的定义与调用1一般内部类

内部类是定义在一个类的类体中的类,内部类也可以包含变量和方法。一般内部类可分为成员类、静态类和局部类三种。内部类的定义与调用1)成员类classOutC{ privateStringi="我是成员变量"; voidA(){ System.out.println("我是成员方法"); } classInC{//内部类的定义 voidprint(){ System.out.println("我是成员类"); } }}内部类的定义与调用成员类可正常访问其它类成员,也可如其它成员一样被修饰,但从外部访问成员类需注意:

Aa=newA("外部类A");//先创建外部类实例

A.Bb=a.newB();//通过外部类实例创建内部类对象eg1

publicstaticvoidmain(Stringargs[]){ OutCout=newOutC(); InCin=out.newInC(); in.print();}内部类的定义与调用eg1//成员类publicclasseg1{ publicstaticvoidmain(String[]args){ OutCout=newOutC(); OutC.InCin=out.newInC();//其它类访问内部类成员的作法

in.print(); }}classOutC{ privateinti; voidA(){ InCin=newInC();//外部类访问内部类成员的做法

in.innerInt=1; } classInC{//内部类的定义

privateintinnerInt; voidprint(){ System.out.println("generalInt="+i); } }}内部类的定义与调用

static修饰的成员类又称为静态类。①顶层类只能访问外部类的static成员。②除外部类外的其它类访问静态类时对象的创建方式和成员类不同。2)静态类

A.Bb=newA.B();//通过外部类直接创建内部类对象beg2可以使用内部类来实现接口和抽象类。eg3eg2//静态类publicclasseg2{ publicstaticvoidmain(String[]args){ OutCout=newOutC(); OutC.InCin=newOutC.InC(); in.print(); }}classOutC{ privateinti; staticintj; voidA(){ InCin=newInC(); in.innerInt=1; } staticclassInC{//顶层类的定义

privateintinnerInt; voidprint(){ // System.out.println("generalInt="+i); System.out.println("staticInt="+j); } }}eg3classeg3//外部类定义{ privateclassPContentsextendsContents//内部类实现抽象类

{ privateinti; PContents(intcn){i=cn;} publicintvalue(){returni;} } protectedclassPDestinationimplementsDestination//内部类实现接口

{ privateStringlabel; privatePDestination(StringwhereTo){label=whereTo;} publicStringreadLabel(){returnlabel;} } publicDestinationdest(Strings){returnnewPDestination(s);} publicContentscont(intcn){returnnewPContents(cn);}}//运用内部类来实现接口和抽象类中的抽象方法abstractclassContents//抽象类定义{ abstractpublicintvalue();}interfaceDestination//接口定义{ StringreadLabel();}classInnerClass//测试类{ publicstaticvoidmain(String[]args) {

eg3p=neweg3(); Contentsc=p.cont(100); Destinationd=p.dest("Tanzania"); System.out.println(c.value()); System.out.println(d.readLabel()); }}内部类的定义与调用

方法中定义的类是方法的一个局部变量。①局部类的作用域仅限于方法内,可以避免类名的冲突。②局部类只能访问方法中的final变量。

要使用局部类只能通过调用方法来实现,不能通过创建类的实例来完成。eg43)局部类eg4//局部类publicclasseg4{ publicstaticvoidmain(String[]args){ OutClassout=newOutClass(); Objectin=out.makeInner(); }}classOutClass{ privateintg; ObjectmakeInner(){ inti; finalintj=0;

classInnerClass{//局部类定义

voidprint(){ System.out.println("generalInt="+g); System.out.println("j="+j); } publicStringtoString(){return"InnerClass";} }

//newInnerClass().print(); //System.out.println(newInnerClass().toString()); returnnewInnerClass(); }}七、内部类的定义与调用1)什么是匿名类?2)匿名类的定义和实例创建是同时完成的。3匿名类没有class关键字,不能有修饰符,也不能定义构造方法。4)使用匿名类可使代码更简洁。2、特殊内部类——匿名类interfaceTestInterface{ voidprint();}newTestInterface(){{//匿名类实现接口publicvoidprint(){System.out.println(“Anonymousclass”);}};相当于:classAimplementsTestInterface{//一般类实现接口publicvoidprint(){System.out.println(“Anonymousclass”);}}

eg5

内部类的定义与调用——示例eg5//匿名类publicclasseg5{ publicstaticvoidmain(String[]args){ TestInterfacetest=newTestInterface(){ publicvoidprint(){System.out.println("Snonymousclassdefinition"); } }; test.print(); }}interfaceTestInterface{voidprint();}importjava.awt.*;importjava.awt.event.*;classAextendsFrame{

publicA(){

addWindowListener(newWindowAdapter(){//匿名类实现接口

publicvoidwindowClosi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论