Topic: 有兴趣的都来解决这样一个问题!谢谢

  Print this page

1.有兴趣的都来解决这样一个问题!谢谢 Copy to clipboard
Posted by: boyman
Posted on: 2005-03-04 07:11

有这样一个程序:
class A{
  A()
  {
    System.out.println("A");
  }
  public void print()
  {
    System.out.println("Test A");
  }
}

class B{
  B()
  {
    System.out.println("B");
  }
  public void print()
  {
    System.out.println("Test B");
  }
}

class C{
  C()
  {
    System.out.println("C");
  }
  public void print()
  {
    System.out.println("Test C");
  }
}
class D{
  public A a;
  public B b;
  public C c;
  D()
  {
    System.out.println("D");
    A a=new A();
    B b=new B();
    C c=new C();

  }
}
public class E extends D{
  E()
  {
    System.out.println("E");
  }
  public static void main(String[] args)
  {
    E e=new E();
    e.a.print();
    e.b.print();
    e.c.print();
  }
}
输出结果是:
D
A
B
C
E
Exception in thread "main" java.lang.NullPointerException
at E.main(E.java:54)
请高手指点。

2.Re:有兴趣的都来解决这样一个问题!谢谢 [Re: boyman] Copy to clipboard
Posted by: 臧圩人
Posted on: 2005-03-04 11:33

你没有对D里的这三个变量初始化:
public A a;
public B b;
public C c;
在D的构造器里,你写的下面三句话:
A a=new A();
B b=new B();
C c=new C();
是另外创建了三个新的局部变量并初始化它们。而并不是初始化D类的a,b,c三个变量。
改成下面的即可:
a=new A();
b=new B();
c=new C();

3.Re:有兴趣的都来解决这样一个问题!谢谢 [Re: boyman] Copy to clipboard
Posted by: boyman
Posted on: 2005-03-05 06:12

高手呀。。。。。。。。
可以了,谢谢高手指点。。。。


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923