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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马-王泽斌 初级黑马   /  2012-8-10 22:23  /  1422 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class InnerClassDemo
{
public static void main(String[] args) {
  A a = new A();
  A.B b = a.new B(); 这里的a.new B();如果换成 new A().new B() 打印的name为什么是null?
  a.name = "aaa";
  b.name = "bbb";
}
}
class A
{
String name;
void fun() {
}
class B
{
  String name;
  void fun1() {
   
  }
}
}

点评

您好 请您将名字改成真实姓名,这是地址 http://bbs.itheima.com/thread-19719-1-1.html  发表于 2012-8-11 08:53

5 个回复

倒序浏览
  1. public class test
  2. {
  3.         public static void main(String[] args) {
  4.                 A a = new A();
  5.                 A.B b = new A().new B();
  6.                 a.name = "aaa";
  7.                 b.name = "bbb";
  8.                 System.out.println(a.name);
  9.                 System.out.println(b.name);
  10.                 }
  11. }

  12. class A        {
  13.         String name;
  14.         void fun() {}
  15.         class B        {
  16.                 String name;
  17.         void fun1() {}
  18.         }
  19. }
复制代码
你是意思是这样吗?
结果没问题啊?
回复 使用道具 举报
  1. public class test
  2. {
  3.         public static void main(String[] args) {
  4.                 A a = new A();
  5.                 A.B b = new A().new B();
  6.                 a.name = "aaa";
  7.                 b.name = "bbb";
  8.                 System.out.println(a.name);
  9.                 System.out.println(b.name);
  10.                 }
  11. }

  12. class A        {
  13.         String name;
  14.         void fun() {}
  15.         class B        {
  16.                 String name;
  17.         void fun1() {}
  18.         }
  19. }
复制代码
你是意思是这样吗?
结果没问题啊
回复 使用道具 举报
你这个代码没贴清楚,但我也大概知道你啥意思了。
A.B b = a.new B(); 这里的a.new B();如果换成 new A().new B() 打印的name为什么是null?
你想的是A.B b= new A().new B() ;吧?你如果这样,你那个 a.name = "aaa";只是给a对象的name赋值,红色部分你建立的等于说是匿名对象,你并没有赋值,所以打印的才是默认初始化值,null。
不知道你是不是这个意思
回复 使用道具 举报
你这个代码没贴清楚,但我也大概知道你啥意思了。
A.B b = a.new B(); 这里的a.new B();如果换成 new A().new B() 打印的name为什么是null?
你想的是A.B b= new A().new B() ;吧?你如果这样,你那个 a.name = "aaa";只是给a对象的name赋值,红色部分你建立的等于说是匿名对象,你并没有赋值,所以打印的才是默认初始化值,null。
不知道你是不是这个意思
回复 使用道具 举报
已经解决
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马