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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

.

© 冯祖焱 黑马帝   /  2012-2-15 16:07  /  2336 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 冯祖焱 于 2017-8-16 09:55 编辑

                                                             .

5 个回复

倒序浏览

回帖奖励 +1

1.
new B()
{
    private int i=1;
    public int value()
    {
        return i;
    }
}
这表示:创建一个B类的子类的对象

2.
B bb=a.b(); //对象a调用其b()方法,由于返回值是B类型,所以“=”左边必须定义bb的类型为:B

3.代码不全,还缺少B类的定义,添加如下,可以编译成功:
  1. class A
  2. {
  3.         public B b()
  4.         {
  5.                 return new B()
  6.                 {
  7.                         private int i=1;
  8.                         public int value()
  9.                         {
  10.                                 return i;
  11.                         }
  12.                 };
  13.         }
  14.        
  15.         public static void main(String[] args)
  16.         {
  17.                 A a=new A();
  18.                 B bb=a.b();
  19.         }
  20.        
  21. }
  22. class B
  23. {
  24.        
  25. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
技术测试刘老师 + 1 可以回答的在详细些.

查看全部评分

回复 使用道具 举报
  1. public B b(){
  2. return new B(){
  3. private int i=1;
  4. public int value(){return i;}
  5. };
复制代码
是在b方法里面new一个B类中的匿名内部类!
  1. public static void main(String[] args){
  2. A a=new A();
  3. B bb=a.b();
  4. }
  5. }
复制代码
创建一个A类的对象,a.b();调用了A类中b的方法,在这个方法中创建了一个B类中的内部类,并返回出去,用bb变量接收了返回出来的匿名内部类的对象,因为这个匿名内部类B类里面的,所以bb变量就用B类型来接收。。。。。
回复 使用道具 举报
B bb=a.b();多态,a.b()返回的是B的匿名子类对象,个人见解
回复 使用道具 举报
本帖最后由 魏腾飞 于 2012-2-15 21:22 编辑

求认可···我进行了拆分,你看看对吧。也希望比较懂行的给点批评和建议。
public class A {
        class B {
                private int i = 1;

                public int value() {
                        return i;
                }
        }

        public B b() {
                System.out.println("hah");
                return new B();
        }

        public static void main(String[] args) {

                A a = new A();

                B bb = a.b();

        }

}
回复 使用道具 举报
一般要访问的内部类中定义的方法不超过三个时,会用匿名内部类来代替内部类的代码,主要就是为了简写代码,其实和内部类并没有太大区别
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马