内部类概念:
其实就是类定义到了另一个类的内部。
内置类,嵌套类。
内部类可以直接访问外部类中的成员。
外部类要想访问内部类,只能建立内部类的对象才可以访问内部类中的成员。
什么时候定义内部类呢?
当对事物进行描述的时候,在描述过程中该事物的内部还有具体的事物,
这是这个具体的事物可以通过内部类来进行描述。
内部类定义是可以存在外部类的任意位置上。
1,可以存放在成员位置上,
可以被成员修饰符修饰。
public 默认权限
通常都会将内部类私有化。通过对外提供公有的方式对其方式,以便于控制
static
当内部类被static修饰时,该内部类就出现访问局限性。只能访问外部类中静态成员。
注意:当内部类中定义了静态成员时,该内部类必须被静态修饰。
2,可以存放在局部位置上。
内部类如果访问局部中的变量,改变量必须被final修饰。
也就是说,内部类只能访问被final修饰的局部变量。
/** * 成员内部类 * */ class Outer { private int num = 4; private static int age = 22; class Inner { void show() { System.out.println("inner中的num="+num);//内部类里可以直接访问父类的成员变量 4 } } static class Inner2 { static String name="lala";//当内部类有静态成员时,内部类必须是静态的,否则编译失败。 private void show() { System.out.println("inner2中的age="+age);//若内部类被static修饰,则内部类只能引用外部类的静态成员。此处不能访问num } void getShow(){ show(); } static void showOfStatic() { System.out.println("inner2中的静态方法:age="+age);//若内部类被static修饰,则内部类只能引用外部类的静态成员。此处不能访问num } } class Inner3 { int num=5; void show() { int num=6; System.out.println("inner3中的num="+num);//内部类里可以直接访问父类的成员变量 6 System.out.println("inner3中的num="+this.num);//内部类里访问内部类本身的成员变量 5 System.out.println("inner3中的num="+Outer.this.num);//内部类里访问内部类本身的成员变量 4 } } public void method() { Inner in = new Inner(); in.show(); } } /** * 局部内部类 */ class outer2{ int num=99; public void function() { // final int num=88; class Inner{ // int num=77; private void show() { //如果删除 int num=77;编译器就会报异常。说是int num=88;需要为final类型 //如果再删除final num=88;则程序执行的输出结果为99; System.out.println("局部内部类"+num); } } Inner inner=new Inner(); inner.show(); } } public class InnerClassVisitFeature { public static void main(String[] args) { //在外部其他类中,直接访问内部类的格式。 //通常编程的时候不会遇到这种情况,通常内部类都是作为私有的private修饰,然后提供一个供外部调用的操作内部类的方法 Outer.Inner in = new Outer().new Inner(); in.show(); //内部类中重新定义了外部类中已经定义的成员变量时。获取不同情况下的值。 Outer.Inner3 in3 = new Outer().new Inner3(); in3.show(); //当内部类被静态修饰,要访问内部类中的非静态方法格式: Outer.Inner2 in2 =new Outer.Inner2(); in2.getShow();//在这里不能直接访问内部类的私有方法show,只能使用借助内部类的其他想歪暴露的方法来访问show方法。 //当内部类被静态修饰,要访问内部类中的静态方法两种格式: Outer.Inner2.showOfStatic(); // in2.showOfStatic(); ///////////////////////////////////////////////////////////////////////////// outer2 out2=new outer2(); out2.function(); } }
上面InnerClassVisitFeature类中main方法执行的结果为:
inner中的num=4
inner3中的num=6
inner3中的num=5
inner3中的num=4
inner2中的age=22
inner2中的静态方法:age=22
局部内部类99
相关推荐
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)。