class A1{
int n;
A1 kkA1=null;public A1(int c){
this.n=c;
}
}
class C{
A1 kkk=null;
public void show(){
A1 a1=new A1(1);
kkk.kkA1=a1;
}
}
为什么 C中 A1 类型的 KKK 可以 kkk.kkA1 为什么 两个都是A1类型的变量啊???希望大家把这个问题也给我解决了嘛???为什么C类中 A1引用类型变量 kkk 可以写成 kkk.kkA1 ..反过来,A类中 却不能 kkA1.kkk帮 我分析下 谢谢!!

解决方案 »

  1.   

    你那个 C类的 show() 不抛  NullPointerException 吗?
      

  2.   

    这是我看到别人解决链表问题时候这样写。kkA1 和 kkk 好像是指的 表头和结点吧
      

  3.   

    写漏掉了一句。class A1{
    int n;
    A1 kkA1=null; public A1(int c){
    this.n=c;
    }
    }
    class C{
    A1 kkk=null;
    public void show(){
    A1 a1=new A1(1);
    this.kkk=a1;
    kkk.kkA1=a1;
    System.out.print("KKk==="+kkk.kkA1);
    }
    }问题关键是 。两个引用类型 变量.变量 算什么
      

  4.   

    1.kkk是A1类型的对象,作为C对象的一个成员,当然可以调用A1的成员(kkA1).
    2.kkA1是A1类型的对象,作为A对象的一个成员,怎么调用C的对象成员呢(当然可以new出来放在方法中调用,但也只能是用new C().kkk调用啊)。