Item.java
package Item;
public class Item {
static String name;
static String author;
static int time;
static int money;
static boolean ifget;
public Item(String name, String author, int time, int money, boolean ifget) {
super();
this.name = name;
this.author = author;
this.time = time;
this.money = money;
this.ifget = ifget;
}
public static void print() {
// TODO 自动生成的方法存根
System.out.println(name);
}
}
music.java
package Item;
public class music extends Item {
public music(String name, String author, int time, int money, boolean ifget) {
super(name, author, time, money, ifget);
// TODO 自动生成的构造函数存根
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
}
}
work.java
package Item;
import java.util.ArrayList;
import java.util.List;
public class work {
private ArrayList<Item> listitem = new ArrayList<Item>();
public void add(Item item) {
listitem.add(item);
}
public void list() {
for(Item item : listitem) {
Item.print();
}
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
work a = new work();
a.add(new music("1","1",1,1,true));
a.add(new music("3","1",1,1,true));
a.list();
}
}
最终work运行结果都是3
请问为什么啊?
还有,为什么我的子类music不能定义父类同名函数print(),但把父类print()函数的static去掉就可以,但这样的话work会报错:
不能对类型 Item 中的非静态方法 print()进行静态引用