为什么输出会产生影响? 我需要抽象课吗?我试过了,但它没有用。 我知道c ++,但我是java新手所以我理解这个概念,但我显然做错了。
输出是: 高尔夫球迷你。 Kapacitet:4 Br kotaca:6 高尔夫球迷你。 Kapacitet:4 Br kotaca:6 Mercedes Nosivost:3000t Kapacitet:4 Br kotaca:6
输出应该是: 蒙迪欧je karavan。 Kapacitet:5 Br kotaca:4 高尔夫球迷你。 Kapacitet:3 Br kotaca:4; Mercedes Nosivost:3000t Kapacitet:4 Br kotaca:6
public class apples {
public static void main(String args[]){
Vozilo Ford = new Auto(4, 5, "Mondeo", "Karavan");
Vozilo golf = new Auto(4, 3, "Golf", "Mini");
Vozilo Kam = new Kamion(6, 4, "Mercedes", 3000);
Vozilo vozila[] = {golf, Ford, Kam};
Ford.ispis();
golf.ispis();
Kam.ispis();
}
}
class Vozilo
public class Vozilo {
private static int brKotaca;
private static int brPutnika;
Vozilo(int br, int br2){
brKotaca = br;
brPutnika = br2;
}
public static void setBrKotaca(int br){
brKotaca = br;
}
public static int getBrKotaca(){
return brKotaca;
}
public static void setBrPutnika(int br2){
brPutnika = br2;
}
public static int getBrPutnika(){
return brPutnika;
}
public void ispis() {
System.out.println("Vozilo");
}
}
class Auto
public class Auto extends Vozilo {
private static String ime;
private static String vrsta;
Auto(int _brKotaca, int _brPutnika, String _ime, String _vrsta )
{
super(_brKotaca, _brPutnika);
ime=_ime;
vrsta=_vrsta;
}
public static String getIme(){
return ime;
}
public static String getVrsta(){
return vrsta;
}
public void ispis(){
System.out.println(ime + " je " + vrsta + ". Kapacitet: " + this.getBrPutnika() + " Br kotaca: " + this.getBrKotaca());
}
}
class Kamion
public class Kamion extends Vozilo {
private static String ime;
private static int nosivost;
Kamion(int _brKotaca, int _brPutnika, String _ime, int _nosivost){
super(_brKotaca, _brPutnika);
ime=_ime;
nosivost = _nosivost;
}
public void ispis(){
System.out.println(ime + " Nosivost: " + nosivost +"t " + " Kapacitet: " + this.getBrPutnika() + " Br kotaca: " + this.getBrKotaca());
}
}
答案 0 :(得分:1)
您已将类变量,getter和setter定义为static
,这意味着每个类中只有一个,而不是每个实例。
从所有类变量和所有方法中删除static
,以便每个对象都获得自己的实例变量。
答案 1 :(得分:0)
private static int brKotaca; private static int brPutnika;
通过将这些字段定义为静态,您可以说每个字段的单个实例应该在Vozilo类及其所有子类的所有实例之间共享。因此,每次为brKotaca分配一个值,即所有实例的值。这真的是你想要的行为吗?