public class Test
{

private AAA aaa; private BBB bbb;
public Test()
{
this.aaa = new AAA();
this.bbb = new BBB();
}
}public class Test
{

private AAA aaa=new AAA();; private BBB bbb=new BBB();;
public Test()
{
}
}
请问一下这样两个类,有点什么区别哈?
或者将来在使用中可能会遇到一些怎么样的区别哈?
感觉区别不大的说。。

解决方案 »

  1.   

    没啥区别,不过
     private AAA aaa=new AAA();;    private BBB bbb=new BBB();;
    这样写的话执行的时机比在构造方法中要早一些
      

  2.   

    如果我在这两个类中同时加入一个方法,在那个方法中涉及到aaa和bbb感觉使用起来也没什么区别吧~
    比如 public void testab()什么的
    {
      aaa.xxx1();
      bbb.xxx2();
    }
    感觉也不会有什么区别。。大家有什么例子能说明 将来会在什么地方导致有所差别的哈~
    public class Test
    {
        
        private AAA aaa;    private BBB bbb;    
        public Test()
        {
            this.aaa = new AAA();
            this.bbb = new BBB();
        }    public void testab()
        {
           aaa.xxx1();
           bbb.xxx2();
        }}
    public class Test
    {
        
        private AAA aaa=new AAA();;    private BBB bbb=new BBB();;    
        public Test()
        {
        }    public void testab()
        {
           aaa.xxx1();
           bbb.xxx2();
        }}貌似这两个类也没啥区别~~~~~~~~~~~~~~~~
      

  3.   

    把构造函数
        public Test()
        {
            this.aaa = new AAA();
            this.bbb = new BBB();
        }
    改一下
        public Test(AAA aaa, BBB bbb)
        {
            this.aaa = aaa;
            this.bbb = bbb;
        }
    这是就必须用this了!
    我觉得this一般就是说在有重名的时候用,这是能把变量对象区分开。
    还有个super,指的是父类的吧,和this差不多。
    我平时在调用类里的全局变量时用this,觉得看起来清楚一些。还有就是调用类里方法时,this加一个点名字就都出来了,不用现找,也省得敲了!
      

  4.   

    这样的例子下没有什么区别。
    但是写在构造方法里的话,可以根据传入的参数来构造。直接初始化就没有这个灵活性。
    如果你确定是 = new AAA();这样的情形,直接初始化很好。
      

  5.   

    但从你的这两个例子上看没有区别,但是再增加其他的构造函数时会有区别如:public class Test
    {
        
        private AAA aaa;    private BBB bbb;    
        public Test()
        {
            this.aaa = new AAA();
            this.bbb = new BBB();
        }
        
        public Test(AAA aaa) {
            this.aaa = new AAA();
            //这儿bbb将没有被初始化
        }
    }