




文档简介
内部类详解什么内部类呢?内部类总共分为四种,分别是静态内部类,成员内部类,局部内部类,匿名内部类,成员内部类(member inner class)什么是成员内部类呢?它可以访问外部类的静态和非静态的方法与成员变量。它的格式为:Class A Class B /内部类生成成员内部类对象的方式为:A.B ab=new A().new B();内部类访问规则内部类的访问规则:a) 内部类可以直接访问外部类中的成员,包括私有,b) 外部类要访问内部类,必须要建立内部类对象为了了解内部类访问规则,我们看如下代码,class InnerTest public static void main(String args) A b=new A();b.function();class A private int a=4; /打印4,必须这样写A.this.aclass Bint a=6; /打印6,必须这样写this.a public void method() int a=5; /打印5,只写a System.out.println(a=+A.this.a); public void function() B b=new B();b.method();总结:我们之所以可以直接访问外部类中的成员,是因为内部类中持有了一个外部类的引用,格式是 外部类名.this那么我们怎么去定义内部类的对象,并调用内部类的方法呢?当内部类定义在外部类的成员位置上,而且非私有,可以在外部其他类中,可以直接建立内部类对象,格式如下:外部类名.内部类名 变量名 =new 外部类名().new 内部类名();例如 A.B ab=new A().new B();静态内部类(static inner class)我们要知道,当内部类在成员位置上,就可以被成员修饰符所修饰。比如private:将内部类在外部类中进行封装。当加上static,内部类就具备static的特性。当内部类被static修饰后,只能直接访问外部类的static成员,出现了访问局限。在外部类其他类中,如何直接访问static内部类非静态方法呢?格式如下:new 外部类名.内部类名().非静态方法名;例如如下代码: class InnerTest public static void main(String args) new A.B().method(); /格式class A private static int a=4; /静态成员变量static class B /静态内部类 public void method() /非静态方法 System.out.println(a=+a); public void function() B b=new B();b.method();那么我们也就可以知道,访问静态方法的格式是:外部类名.内部类名.静态方法名();我们还要注意一点,当内部类中定义了静态成员,该内部类必须是static。当外部类中的静态方法访问内部类时,内部类必须是静态的。内部类定义原则是什么呢?当描述事物时,事物的内部还有事物,该事物就用内部类来描述。因为内部类事物在使用外部事物的内容。我们一般把内部类用private修饰,那么我们如何访问一个被private修饰的内部类的方法呢?;我们去在外部类定义一个方法来调用内部类中的方法,例如:Class A Private class B Void method()Public void show()new B().method;总结:静态内部类只能访问外部类的静态成员变量与静态的方法。生成静态内部类对象的方式为:A.B ab=new A.B();局部内部类(Local Inner Class)局部内部类是定义在方法当中,只能访问方法中声明的final类型的变量我们先看看当内部类定义在局部时,就是定义在方法里。我们要注意:1. 不可以被成员修饰符修饰2. 可以直接访问外部类中的成员,因为还持有外部类中的引用,但是不可以访问它所在的局部中的变量。只能访问被final修饰的局部变量我们看看如下例子:class InnerTest2 public static void main(String args) Outer o=new Outer();o.method(7); /运行完后销毁o.method(6);class Outer int x=3;void method(final int a) /声明成final类型 final int y=9; /声明成final类型 class Inner void show()System.out.println(x=+y); System.out.println(a=+a); new Inner().show(); /这个必须放下面匿名内部类(Anonymous Inner Class)现在我们来看看什么是匿名内部类?1. 匿名内部类其实就是内部类的简写格式。2. 定义匿名内部类的前提,就是内部类必须是继承一个类或者实现接口我们看看把如下代码简化成匿名内部类:简化前:class Test3 public static void main(String args) new Outer().function();abstract class T/定义一个抽象类public abstract void show();class Outerint a=3; class Inner extends T /继承抽象类T public void show() /复写抽象类T的方法 System.out.println(a=+a); public void function() new Inner().show();简化后:class Test3 public static void main(String args) new Outer().function();abstract class T/定义一个抽象类public abstract void show();class Outerint a=3;public void function() new T() /直接new抽象类T是作为内部类 public void show() /复写抽象类T的方法 System.out.println(a=+a); .show(); /记住.show()是调用内部类方法,如果不调用,记住大括号后面加分号从以上蓝色代码中我们就认
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年安徽安全员考试模拟考试题及答案
- 2025年健身项目经理专业素质评定考试试题及答案解析
- 2025年健身房管理师职业水平评定试题及答案解析
- 2025年建筑玻璃幕墙工程师职业资格考试试题及答案解析
- 2025年安全生产安全检查标准试题及答案
- 2025年摄影师招聘面试技巧与模拟题答案
- 2025年暑期消防安全知识测试题库
- 机电知识培训目的课件
- 2025年工地安全员高处作业规范及答案
- 2025年收费站安全生产法规模拟题
- 一年级新生报名登记表
- 《体育游戏》课程标准
- 制程能力管理办法实用文档
- GB/T 451.3-2002纸和纸板厚度的测定
- GB/T 1303.2-2009电气用热固性树脂工业硬质层压板第2部分:试验方法
- 子痫前期子痫课件
- 部编版《县委书记的榜样-焦裕禄》课件1
- 基础教育改革与发展中的热点问题课件
- 汽车保养基础知识优秀课件
- 青少年运动员 运动损伤的预防 课件
- 2022年十部经典的三级片电影
评论
0/150
提交评论