黑马程序员技术交流社区

标题: 内部类问题 [打印本页]

作者: 黑马-王泽斌    时间: 2012-8-10 22:23
标题: 内部类问题
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() {
   
  }
}
}

作者: 李知伦    时间: 2012-8-10 23:43
  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. }
复制代码
你是意思是这样吗?
结果没问题啊?
作者: 李知伦    时间: 2012-8-10 23:44
  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. }
复制代码
你是意思是这样吗?
结果没问题啊
作者: zhaosenyang    时间: 2012-8-10 23:52
你这个代码没贴清楚,但我也大概知道你啥意思了。
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。
不知道你是不是这个意思
作者: zhaosenyang    时间: 2012-8-10 23:53
你这个代码没贴清楚,但我也大概知道你啥意思了。
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。
不知道你是不是这个意思
作者: 黑马-王泽斌    时间: 2012-8-11 03:50
已经解决




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