A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 絮缘小默 中级黑马   /  2014-2-22 09:35  /  1097 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如何定义内部类的对象,最好有例子谢谢了

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

5 个回复

正序浏览
“可以在方法中定义内部类,如果要访问方法中定义的本地变量或者方法的参数,则变量或方法的参数必须定义为final。不过,此内部类可以直接访问外部类的方法。 ”
我查了资料:局部内部类中可以通过--外部类名.this引用其外部类的实例,但是这个引用只能使用方法或语句块中的final常量
回复 使用道具 举报
public class OutClass{ //外部类
class InnerClass{...}//内部类
public static void main(String[] args){
InnerClass in = new OutClass().new InnerClass();//定义内部类成员变量
}
}

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
这是前阵子总结的一点
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();
        }
}

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
一个类被嵌套定义在另一类中,那么这个类被称为内部类,内部类作为外部类的一个成员,并且依附于外部类而存在的,可为静态,可用protected和private修饰
class Outclass {      
      int a;     
      void print(){        
      System.out.println("a="+a);      }            
      class Inclass{ //定义了一个内部类        
      int b;  //内部类的变量         
    void print1(){ //内部类的方法                     
      System.out.println("b="+b);         
      }      
}  }

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
  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的方法!

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马