我的代码是这样的: 我有两节课 头等舱:
public class Box<E> {
E data1;
public Box(E data) {
this.data1 = data;
}
public E getData() {
return data1;
}
}
第二课:
public class IntBox extends Box<Integer>{
Integer data;
public IntBox(Integer data) {
this.data = data;
}
public Integer getData() {
return data;
}
}
为什么这个课程不从Box<E>
扩展?
答案 0 :(得分:1)
那不会编译。
你的第二堂课应该是:
public class IntBox extends Box<Integer>{
public IntBox(Integer data) {
super(data);
}
}
然后它将正确扩展它并使用Box的方法。
答案 1 :(得分:1)
我不会为此目的创建一个新类,因为IntBox类不会向Box添加功能,而只是使其更具限制性。相反,只需声明Box使用Integer。即,
public class Foo {
public static void main(String[] args) {
Box<Integer> intBox = new Box<Integer>(300);
System.out.println("data is: " + intBox.getData());
}
}
答案 2 :(得分:0)
后一类从第一个泛型类扩展而来。这个例子应该不是更大的问题。只需确保通过super(data)调用基类的构造函数;在IntBox构造函数中。