0

如何打字:

public class Example  
{  
    private Cat whiskers;  

    public void makeCat()  
    {  
        whiskers = new Cat();  
    }  
}  

不同于:

public class Example  
{  
    public void makeCat()  
    {  
        Cat whiskers = new Cat();  
    }  
}

似乎第一个示例工作量更大,因为您现在只能从中创建名为胡须的 Cat 对象。为什么要宣布它?

4

4 回答 4

2

首先,您要声明一个私有变量,该变量可以由其他方法(或属性)在同一实例中使用。但是,在您的第二个示例中,您只是声明了一个具有局部范围的变量,换句话说,该变量仅在makeCat().

于 2012-12-17T04:41:37.447 回答
1

看起来你需要一本关于面向对象编程基础的好书。

在第一种情况下,您声明了一个“私有成员变量”。这现在是类的一部分,可以在其他成员函数中使用,甚至可以从外部使用。

在第二种情况下,您要声明一个“局部变量”。这是一个仅在定义它的函数内有效的变量,并且仅用于函数内的计算。不能从类的外部/其他功能访问它。

于 2012-12-17T04:39:41.950 回答
0

当第一个对象是第二个对象的一部分时,在另一个对象的字段中声明一个对象。例子-:

class Product
  {
    int productId;
    ProductDetail detail;
  }

class ProductDetail
   {
     string brand;
     int price;
     string description;
   }

在上面的例子中,产品类​​的一个对象对应一个产品,每个产品都有一些细节。所以每当创建产品类对象时,JVM都会创建ProductDetail类对象。

在您的第一个场景中,当 Example 类对象在任何地方创建时,Cat 类对象由 JVM 创建。在第二种情况下,它只是该方法中的一个局部变量。并且在创建 Example 类对象时没有 Cat 对象。

于 2012-12-17T04:47:10.230 回答
0

不同之处在于第一个示例使用了一个字段(也称为“实例变量”),其他方法也可以引用(即“使用”)它,而无需将其传递给方法。

第二个例子是一个局部变量——它只能在该方法中使用(或其他方法,如果传递给它们)。

于 2012-12-17T04:47:22.260 回答