成员内部类 之所以叫做成员 就是说他是类实例的一部分,而不是类的一部分,而静态的是类的一部分和实例无关,不用类的对象实例就可调用。
第二个问题看下以下代码- package com.test.java;
- public class ChengYuanNeiBuLeiTest {
- /**
- *
- * 成员内部类等同于成员方法
- * 成员内部类中不能有静态声明的的方法
- * 成员内部类可以访问外部类的所有方法
-
- * 局部内部类等同于局部变量,不能用访问控制权限控制
- * 局部内部类不能有静态声明
- * 局部内部类在访问局部变量的时候,局部变量必须使用final修饰
- * 局部内部类的访问方法,因为他是局部内部类,就相当于局部变量,只有在大括号之内才有效
- * 所以只能在大括号里面new一个新对象
- * 局部内部类要访问局部变量必须声明为final类型
- */
-
- //局部内部类
- public void m3(){
- final int i = 10;
- class JuBuNeiBuLei{
- public void m4(){
- System.out.println(i+"局部内部类");
- }
- }
- //要想访问m4方法 ,只要访问m3方法就可以访问m4方法
- JuBuNeiBuLei jb = new JuBuNeiBuLei();
- jb.m4();
- }
- //成员内部类等同于成员方法如下
- class InnerClass{
- public void m4(){
- System.out.println(s1);
- m1();
- System.out.println(s2);
- m2();
- }
- }
- //静态变量
- private static String s1="A";
- //成员变量
- private String s2="B";
- //静态方法
- private static void m1(){
- System.out.println("静态方法执行");
- }
- private static void m2(){
- System.out.println("第二个成员方法执行");
- }
-
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- //创建外部类对象
- /**
- * 访问成员内部类的方法:
- * 先创建外部类然后用外部类的引用去创建内部类如下格式
- */
- ChengYuanNeiBuLeiTest cy = new ChengYuanNeiBuLeiTest();
- InnerClass in = cy.new InnerClass();
- in.m4();
- //访问局部内部类
- ChengYuanNeiBuLeiTest cy1 = new ChengYuanNeiBuLeiTest();
- cy1.m3();
- }
- }
复制代码 |