我理解了吗?

时间:2015-01-10 17:10:23

标签: java static

我不知道这是否是一种提问的错误方式,因为它实际上是我在另一个question提示的延续。

问题是,我想知道静态关键字做了什么,我想我明白了。我现在的问题是,我理解正确吗?我如何创建“狗”的实例?

class Dog {
static String form /* of all dogs */ =  "Doggy-like";
static int quantity /* of dogs */ = 5;

String colour; /* of a specific dog */
String size; /* of a specific dog */ 

}

class Cat {
static String form /* of all cats */ = "Catty-like";    
static int quantity/* of cats */ = 3;

String colour; /* of a specific cat */
String size; /* of a specific cat */


}

public class Animals {
public static void main(String[] args){
    System.out.println("There are "+Cat.quantity+" cats.");
    System.out.println("There are "+Dog.quantity+" dogs.");
    /* EDIT: */
    Dog Mike = new Dog();
    Dog Pete = new Dog();
    Cat Sushi = new Cat();
    Cat Michael = new Cat();
    Cat Pete = new Cat();
    Dog.Mike.size="Big";
    Dog.Mike.colour="Red";
    Dog.Pete.size="Small";
    Cat.Sushi.size="Small";

    }
}

我也想知道那些皮特猫和狗之间是否存在冲突,以及是否正确定义它们的尺寸是正确的。在公共类动物中创建它,或者在它们各自的类(或其他类中)创建它是否有所不同?

2 个答案:

答案 0 :(得分:2)

要创建Dog的实例,只需执行

Dog d = new Dog();

在这种情况下,将调用类的default constructor

答案 1 :(得分:2)

是的,您已在类中定义了静态字段,并使用ClassName.fieldName在静态上下文中访问它。所以你是对的。

如果你想实例化Dog,你可以在你的主体中这样做:

Dog dog = new Dog();

默认情况下,我们得到不接受任何参数的构造函数。