package org.lgy.study.innerclass; public class LocalInnerClass{ public static void main(String[] args){ //如果需要在局部内部类中访问所在方法的局部变量,则必须将局部变量声明为final final int x = 1; //局部内部类仅在该方法里有效,由于局部内部类不能在外部类的方法以外的地方使用, //因此局部内部类也不能使用访问控制符和static修饰符修饰。 //如果需要用局部内部类定义变量、创建实例、派生子类,那么都只能在局部内部类所在的方法内进行 class InBase{ //局部内部类中不能定义static成员 //static String str = "123"; private String var = "***"; private void method1(){ System.out.println("method1 in InBase"); } } class InSub extends InBase{ private int var = 1; private void method1(){ System.out.println("method1 in InSub"); } } InBase inBase = new InSub(); //即使内部类的成员变量和成员方法是私有的,也可以直接访问 System.out.println(inBase.var); inBase.method1(); } }
package org.lgy.study.innerclass; public class LocalInnerClass{ //method1是外部类的非静态成员方法,当调用method1是已经创建了外部类的对象, //所以method1中既可以访问外部类的非静态成员,也可以访问外部类的静态成员, //所以在method1的局部内部类中也既可以访问外部类的非静态成员,也可以访问外部类的静态成员。 public void method1(){ int a = 1; class Inner1{ //局部内部类中不能定义static成员 //static String str; public void method1(){ //由于局部内部类所在方法是非静态成员方法,所以可以通过如下方法访问外部类 //的静态成员 LocalInnerClass.method4(); //由于局部内部类所在方法是非静态成员方法,所以可以通过如下方法访问外部类 //的非静态成员 LocalInnerClass.this.method3(); //局部内部类中可以直接访问所在方法中的局部变量, //无需将局部变量声明为final System.out.println(a); } } new Inner1().method1(); } //method2是外部类的静态成员方法,当调用method2时可能没有创建外部类实例, //所以method2中只能访问外部类的静态成员变量, //所以在method2的局部内部类中也只能访问外部类的静态成员变量。 public static void method2(){ int a = 1; class Inner2{ public void method1(){ //由于局部内部类所在的方法是静态成员方法,所以可以通过如下方法访问外部类 //的静态成员 LocalInnerClass.method4(); //由于局部内部类所在的方法是静态成员方法,所以无法访问外部类的非静态成员方法。 //method3(); System.out.println(a); } } new Inner2().method1(); } private void method3(){ System.out.println("***"); } private static void method4(){ System.out.println("---"); } public static void main(String[] args){ new LocalInnerClass().method1(); LocalInnerClass.method2(); } } /* 结果: --- *** --- */
相关推荐
java 内部类 实例内部类 局部内部类 匿名类 静态内部类 实例代码
- 不同类型的内部类(静态内部类、成员内部类、局部内部类和匿名内部类)的区别和用法 - 内部类的优缺点以及使用场景 这些目标将帮助你理解和掌握内部类的概念,并能够在适当的时候使用内部类来解决问题...
java 局部内部类的使用规范 java 局部内部类的使用规范
4、匿名内部类:特殊的局部内部类,没有类名,只能作为子类出现且只能创建一个对象。 Object类 Object类有什么特点? Object类是所有类的父类(超类,根类,基类),Java中所有类都是Object类的子类 Object类中所...
14.java局部内部类(方法中类).zip14.java局部内部类(方法中类).zip14.java局部内部类(方法中类).zip14.java局部内部类(方法中类).zip14.java局部内部类(方法中类).zip14.java局部内部类(方法中类).zip14...
1.接口-简介 2.接口-作用 3.接口-定义方式 4.接口-实现 5.接口-与抽象类之区别 6.接口-应用示例(设计模式...内部类-局部内部类 12.内部类-匿名内部类 13.内部类-静态内部类 14.综述
Java语言中的内部类根据定义的位置和访问权限可以分为四类:成员内部类、局部内部类、匿名内部类和静态内部类。成员内部类是定义在类的内部且与类的实例相关联的类;局部内部类是定义在方法或作用域内的类;匿名内部...
定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。 访问范围 局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被...
NULL 博文链接:https://jayxigua.iteye.com/blog/686371
Java ---- 局部内部类 静态内部类 普通内部类
成员内部类、局部内部类、静态内部类、匿名内部类
局部内部类 定义的位置:方法中 匿名内部类 定义的位置:值或实参中 1.2成员内部类 定义位置: 在类中方法以外 语法: 访问权限修饰符 class类名{ } 注意: 成员内部类中不能定义静态代码块,静态属性,静态方法 创建对象...
- 第6章 面向对象(下)- 6.7 内部类6.7.4 局部内部类什么是局部内部类在方法里定义内部类就是一个局部内部类,局部内部类仅在该方法里有效。由于局部内部
主要介绍了Java局部内部类的相关资料,帮助大家更好的理解和学习Java 内部类的知识,感兴趣的朋友可以了解下
//从阅读角度,这里预期打印a=20,然而只会打印出a=10,会让人误解,因为在Inner的change()中修改的是Inner内部类对象的this.a,它是m
JAVA内部类的一些总结
内部类主要有以下几类:成员内部类、局部内部类、静态内部类、匿名内部类 内部类的共性 (1)、内部类仍然是一个独立的类,在编译之后内部类会被编译成独立的.class文件,但是前面冠以外部类的类名和$符号 。 ...
局部内部类访问外边的局部变量 马克-to-win java视频的介绍
day11_11_局部内部类定义
详细讲述了内部类的一些方法,如:成员内部类,局部内部类等,并用案例给以说明,