黑马程序员技术交流社区

标题: 问一个关于内部类的问题 [打印本页]

作者: 絮缘小默    时间: 2014-2-22 09:35
标题: 问一个关于内部类的问题
如何定义内部类的对象,最好有例子谢谢了
作者: itpower    时间: 2014-2-22 10:56
  1. class A
  2. {
  3.      B bb = new B();
  4.      bb.show();
  5.      class B
  6.     {
  7.          public void show()
  8.          {
  9.             System.out.println("BBBBB");
  10.          }
  11.     }
  12. }
复制代码

B是A的内部类,在A类中构建B的对象,并调用B的方法!
作者: 心是你仰望的城    时间: 2014-2-22 11:10
一个类被嵌套定义在另一类中,那么这个类被称为内部类,内部类作为外部类的一个成员,并且依附于外部类而存在的,可为静态,可用protected和private修饰
class Outclass {      
      int a;     
      void print(){        
      System.out.println("a="+a);      }            
      class Inclass{ //定义了一个内部类        
      int b;  //内部类的变量         
    void print1(){ //内部类的方法                     
      System.out.println("b="+b);         
      }      
}  }
作者: skyname    时间: 2014-2-22 13:15
这是前阵子总结的一点
1、内部类是一个单独的类,在内部类当中可以访问外部类当中的私有变量。
2、内部类访问属性的顺序是,先搜索内部类属性域,再搜索外部类属性域。
3、可以在方法中定义内部类,如果要访问方法中定义的本地变量或者方法的参数,则变量或方法的参数必须定义为final。不过,此内部类可以直接访问外部类的方法。
4、内部类可以声明为private或protected;还可以声明为abstract或final。
5、若内部类声明为静态类,则只能访问外部类的静态变量和静态方法。
class OuterClass {
        private int TestInt=32767;
       
        class InnerClass {
       
        public InnerClass() {

                System.out.println("这里是非静态内部类,获取外部类的私有变量的值:TestInt="+TestInt);

                }
        }
        static class InnerStaticClass {
                public static void About() {
                        System.out.println("这里是静态内部类,被外部类直接调用。");
                }
        }
        private void FunctionClassTest() {
                System.out.println("这里是外部类的方法FunctionClassTest,被局部内部类调用。");
        }
        public void showMessage() {
        final int a=0;
        int b=1;  
        class FunctionClass {
                public FunctionClass() {
                        System.out.println("这里是局部内部类,访问方法中定义的本地变量或者方法,需要把变量或方法声明为final。");
                        System.out.println("这里是局部内部类,访问本方法中的final类型的a变量:a="+a);
                        FunctionClassTest();
                }
        }
//创建局部类对象
        new FunctionClass();
//调用静态类中的静态方法
        InnerStaticClass.About();
        }
}
作者: 浅一蓝    时间: 2014-2-22 14:39
public class OutClass{ //外部类
class InnerClass{...}//内部类
public static void main(String[] args){
InnerClass in = new OutClass().new InnerClass();//定义内部类成员变量
}
}
作者: 絮缘小默    时间: 2014-2-24 20:46
“可以在方法中定义内部类,如果要访问方法中定义的本地变量或者方法的参数,则变量或方法的参数必须定义为final。不过,此内部类可以直接访问外部类的方法。 ”
我查了资料:局部内部类中可以通过--外部类名.this引用其外部类的实例,但是这个引用只能使用方法或语句块中的final常量




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2