A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 黄鸿达 于 2013-2-5 14:13 编辑
  1. void show(ArrayList<? extends Person> al){
  2.                 for(Iterator<? extends Person>i=al.iterator();i.hasNext();){
  3.                         System.out.println(i.next().getName());
  4.                 }
  5.         }
  6. }
  7. class Person{
  8.         String name;
  9.         Person(String name){
  10.                 this.name=name;
  11.         }
  12. //这里如果修饰符不加public 上面的i.next().getName() 就出错,编译失败  
  13.         public String getName(){        
  14.                 return name;
  15.         }
  16. }
  17. class Worker extends Person{
  18.         String name;
  19.         Worker(String name){
  20.                 super(name);
  21.         }
  22. }
复制代码
问题1:为什么如果父类person 的getname方法 不加public ,show方法里i.next().getName()就出问题,就是编译失败。
  1. void show(ArrayList<Person> al){
  2.                 for(Iterator<Person>i=al.iterator();i.hasNext();){
  3.                         System.out.println(i.next().getName());
  4.                 }
  5.         }
  6. }
  7. class Person{
  8.         String name;
  9.         Person(String name){
  10.                 this.name=name;
  11.         }
  12. //没加public  
  13.         String getName(){   
  14.                 return name;
  15.         }
  16. }
复制代码
问题2:为什么如果show方法不加泛型限定<? extends Person>,person的getname方法 不加public 也能打印出来
  1. void show(ArrayList<? extends Person> al){
  2.                 for(Iterator<? extends Person>i=al.iterator();i.hasNext();){
  3.                         System.out.println(i.next().getName());
  4.                 }
  5.         }
  6. }
  7. class Person{
  8.         String name;
  9.         Person(String name){
  10.                 this.name=name;
  11.         }
  12.         public String getName(){
  13.                 return name;
  14.         }
  15. }
  16. class Worker extends Person{
  17.         String name;
  18.         Worker(String name){
  19.                 super(name);
  20.         }
  21. //子类加自己的getName方法   然后arraylist加入子类元素,打印出来是null
  22. public String getName(){
  23. return name;
  24.         }
  25. }
复制代码
问题3:为什么如果父类person 的getname方法 加了public,子类也写了个public 的 getname方法 ,然后加入子类元素,打印出来是null

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马