[英]Error while creating object instances in Java
码:
public class Dog{
static int age;
static String name;
static String breed;
public Dog(String name,int age,String breed){
this.name=name;
this.age=age;
this.breed=breed;
}
public Dog(String name,int age){
this(name,age,"greed");
}
public static void main(String args[]){
Dog high=new Dog("luffy",19,"pomerian");
Dog low=new Dog("gold",32,"german shepherd");
System.out.println(low.name+" "+low.age+" "+low.breed);
System.out.println(high.name+" "+high.age+" "+high.breed);
}
}
输出: gold 32 german shepherd gold 32 german shepherd
虽然我正在创建两个对象实例,但仅打印其中一个的字段。错误在哪里?
所有static
字段都是共享的( static
字段是每个类的),但是您需要实例字段(每个实例)。 更改
static int age;
static String name;
static String breed;
至
private int age;
private String name;
private String breed;
而且您可能应该具有accessor( get
ters)方法-如果添加toString()
则可以简化打印。 喜欢,
@Override
public String toString() {
return name + " " + age + " " + breed;
}
然后,你可以print
只
System.out.println(low);
System.out.println(high);
您已经使用了静态访问修饰符,并且静态变量为每个类对象共享内存。如果您不想这样做,则只需从age,name,
public class Dog{
int age;
String name;
String breed;
public Dog(String name,int age,String breed){
this.name=name;
this.age=age;
this.breed=breed;
}
public Dog(String name,int age){
this(name,age,"greed");
}
public static void main(String args[]){
Dog high=new Dog("luffy",19,"pomerian");
Dog low=new Dog("gold",32,"german shepherd");
System.out.println(low.name+" "+low.age+" "+low.breed);
System.out.println(high.name+" "+high.age+" "+high.breed);
}
}
在您的代码中将Static更改为private:
范例:
public class Dog{
private int age;
private String name;
private String breed;
public Dog(String name,int age,String breed){
this.name=name;
this.age=age;
this.breed=breed;
}
public Dog(String name,int age){
this(name,age,"greed");
}
}
public static void main(String args[]){
Dog high=new Dog("luffy",19,"pomerian");
Dog low=new Dog("gold",32,"german shepherd");
System.out.println(low.name+" "+low.age+" "+low.breed);
System.out.println(high.name+" "+high.age+" "+high.breed);
}
}
输出:
luffy 19 pomerian
gold 32 german shepherd
并且 :
public class Dog{
private int age;
private String name;
private String breed;
public Dog(String name,int age,String breed){
this.name=name;
this.age=age;
this.breed=breed;
}
public Dog(String name,int age){
this(name,age,"greed");
}
void toStrig (){
System.out.println(name+" "+ age+" "+breed);
}
public static void main(String args[]){
Dog high=new Dog("luffy",19,"pomerian");
Dog low=new Dog("gold",32,"german shepherd");
high.toStrig();
low.toStrig();
}
}
输出:
luffy 19 pomerian
gold 32 german shepherd
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.