所谓内部类,就是在一个类中声明的类称为内部类。
1.为什么要有内部类呢?
- 内部类可以访问外部类中的私有实例变量。
- 当内部类的访问修饰符声明为private时,内部类只能在外部类内部使用,使用外部类时不知道内部类的存在。
2.什么是内部类呢?
public class Outer { public void run(){ System.out.println("Hello,I'm in the Outer!!!"); } public class Inner{ public void run(){ System.out.println("Hello,I'm in the Inner..."); } } }
3.如何调用内部类的实例对象呢?
内部类的实例化有两种方法:
Outer.Inner inner = new Outer().new Inner(); inner.run();
Outer outer = new Outer(); Inner inner = outer.new Inner(); inner.run(); //调用内部类的方法 outer.run(); //调用外部类的方法
4.内部类可以调用外部类的实例变量
public class Outer { private String name = "tom"; public class Inner{ public void run(){ System.out.println("Inner..."+name); } } }
name只有一个属性值,输出的结果就是:Inner...tom
如果在内部类的内部也声明了一个name属性的话,那么它就会根据就近原则,选择离它最近的name值,如果是这样的话,怎么调用外部类的属性值呢?
public class Outer { private String name = "tom" public class Inner{ private String name = "jerry"; public void run(){ System.out.println("Hello, Inner..."+ Outer.this.name); System.out.println("Hello, Inner..."+this.name); } } }
输出结果:Hello,Inner...tom
Hello,Inner...jerry
5.在外部类内部创建内部类对象
在外部类创建内部类对象,直接创建就可以了
public class Outer { public void hi(){ Inner in = new Inner(); in.run(); } public class Inner{ public void run(){ …… } } }
6.静态内部类
静态内部类就是用static修饰的内部类
public static class Inner{
……
}
在创建时,用外部类直接调用来创建:Outer.Inner inner = new Outer.Inner();
静态内部类的方法可以调用外部类的静态属性:
public class Outer { private static String name = "jack"; public static class Inner{ private static String name = "merry"; public void sayHi(){ System.out.println("Hello "+Outer.name); System.out.println("Hello "+ name); } } }
输出结果:Hello jack
Hello merry
7.局部内部类
局部内部类创建在一个方法中,作用范围在这个方法中
public class Outer{ public void hi(){ class Inner{ public void sayHello(){ System.out.println("Hello"); } } Inner inner = new Inner(); inner.sayHello(); } }
为什么采用局部内部类?
- 解决一个复杂的问题,想创建一个类来辅助你的解决方案,但是又不希望这个类是公共可用的
- 在方法内部实现一个接口,并返回对其的引用
相关推荐
Handler对象中使用匿名内部类或非静态内部类正确地释放消息避免内存泄漏或增加Native内存,在Android中,Handler对象通常会被用来在主线程(UI线程)中处理消息,以更新UI界面。当我们在Handler对象中使用匿名内部类...
1.接口-简介 2.接口-作用 3.接口-定义方式 4.接口-实现 5.接口-与抽象类之区别 6.接口-应用示例(设计模式...内部类-局部内部类 12.内部类-匿名内部类 13.内部类-静态内部类 14.综述
Java内部类是Java言语的一个很重要的概念,《Java编程思想》花了很大的篇幅来讲述这个概念。但是我们在实践中很少用到它,虽然我们在很多时候会被动的使用到它,但它仍然像一个幕后英雄一样,不为我们所知,不为我们...
内部类分类
java 内部类 实例内部类 局部内部类 匿名类 静态内部类 实例代码
java 匿名内部类的使用规范 java 匿名内部类的使用规范 java 匿名内部类的使用规范
Java内部类Java内部类Java内部类Java内部类Java内部类Java内部类Java内部类
相关android开发中内部类 匿名内部类 内部接口 对比说明
实验报告8++内部类与异常类
java 成员内部类使用 内部匿名类 方法参数匿名类 方法匿名类
成员内部类、局部内部类、静态内部类、匿名内部类
主要讲述了JAVA中内部类和匿名内部类的相关问题。
java基础第七章内部类与异常类.doc
java的内部类
反射私有内部类的例子 反射私有内部类的例子反射私有内部类的例子
- 不同类型的内部类(静态内部类、成员内部类、局部内部类和匿名内部类)的区别和用法 - 内部类的优缺点以及使用场景 这些目标将帮助你理解和掌握内部类的概念,并能够在适当的时候使用内部类来解决问题...
java内部类详解
java 利用反射获取内部类静态成员变量的值操作.docx
定义在一个类内部的类叫内部类,包含内部类的类称为外部类。内部类可以声明public、protected、private等访问限制,可以声明为abstract的供其他内部类或外部类继承与扩展,或者声明为static、final的,也可以实现...
内部类是指在一个外部类的内部再定义一个类。类名不需要和文件夹相同。内部类可以是静态static的,也可用public,default,protected和private修饰。(而外部顶级类即类名和文件名相同的只能使用public和default)。