黑马程序员技术交流社区
标题:
关于泛型 继承 的问题,为什么这里要加public
[打印本页]
作者:
黄鸿达
时间:
2013-2-5 14:11
标题:
关于泛型 继承 的问题,为什么这里要加public
本帖最后由 黄鸿达 于 2013-2-5 14:13 编辑
void show(ArrayList<? extends Person> al){
for(Iterator<? extends Person>i=al.iterator();i.hasNext();){
System.out.println(i.next().getName());
}
}
}
class Person{
String name;
Person(String name){
this.name=name;
}
//这里如果修饰符不加public 上面的i.next().getName() 就出错,编译失败
public String getName(){
return name;
}
}
class Worker extends Person{
String name;
Worker(String name){
super(name);
}
}
复制代码
问题1:为什么如果父类person 的getname方法 不加public ,show方法里
i.next().getName()就出问题,就是编译失败。
void show(ArrayList<Person> al){
for(Iterator<Person>i=al.iterator();i.hasNext();){
System.out.println(i.next().getName());
}
}
}
class Person{
String name;
Person(String name){
this.name=name;
}
//没加public
String getName(){
return name;
}
}
复制代码
问题2:为什么如果show方法不加泛型限定
<? extends Person>,person
的getname方法
不加public 也能打印出来
void show(ArrayList<? extends Person> al){
for(Iterator<? extends Person>i=al.iterator();i.hasNext();){
System.out.println(i.next().getName());
}
}
}
class Person{
String name;
Person(String name){
this.name=name;
}
public String getName(){
return name;
}
}
class Worker extends Person{
String name;
Worker(String name){
super(name);
}
//子类加自己的getName方法 然后arraylist加入子类元素,打印出来是null
public String getName(){
return name;
}
}
复制代码
问题3:为什么如果父类person 的getname方法 加了public,子类也写了个public 的 getname方法 ,然后加入子类元素,打印出来是null
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2