这是一个JAVA程序,主要练习继承的用法。不过,我在这想问的是一个读入多个参数的问题
下面是一个编写类
import java.util.ArrayList;
public class Readings {
private int pages;
private String name;
public ArrayList<String> keywords=new ArrayList<String>();
public Readings(String a,int b,String ... keywords){
name=a;
pages=b;
}
public String toString(){
String xinxi="书名:"+name+"\n页数:"+pages+"\n"+"关键词:";
int a=keywords.size();
String xinxi3="",xinxi2;
for(int num=0;num < a;num++)
{
         xinxi2=keywords.get(num);
         xinxi3=xinxi2+xinxi3;
}
String xinxi4=xinxi+xinxi3;
return xinxi4;
}
}
class Book extends Readings{
public Book(String a,int b,String ... keywords){
super(a,b);
}
}
class Novel extends Readings{
public Novel(String a,int b,String ... keywords){
super(a,b);
}
}
class Journal extends Readings{
public Journal(String a,int b,String ... keywords){
super(a,b);
}
}
class Magazine extends Readings{
public Magazine(String a,int b,String ... keywords){
super(a,b);
}
}
class Textbook extends Readings{
public Textbook(String a,int b,String ... keywords){
super(a,b);
}
}
下面这个是驱动类public class Readingsmian { /**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
Readings rea=new Readings("hhh",123,"hhh","zouzouzou","helloworld");
      Novel nov=new Novel("钢铁是怎样炼成的",1236,"保尔","俄罗斯");
      Magazine mag=new Magazine("电脑周刊",256,"电脑科技","电脑组装","硬件大全","电脑购买");
      Textbook text =new Textbook("JAVA程序设计教程",505,"JAVA程序设计","编程","教学");
      System.out.println(nov);
      System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
      System.out.println(mag);
      System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
      System.out.println(text);
      System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
      System.out.println(rea);
}
}
我想问的就是。为什么后面的多个参数读不进去,如何能读进去呢,求指教

解决方案 »

  1.   

    原因是构造函数里没有对keywords赋值
    public Readings(String a,int b,String ... keywords){
    name=a;
    pages=b;

    for(String s:keywords){
      this.keywords.add(s);
    }

    }
    还有每一个子类都调用super(a,b,keywords)三个参数
      

  2.   

    无比感谢,但我还想问一下,为什么super不应该是调用父类的方法吗,父类的构造方法里,后面是输入多个参数,而子类里super(a,b,keywords),后面不是读入了一个数组了吗?参数类型这不是不一致了吗?
      

  3.   

    参数是String... 意味着可以传入String[]类型的,也可以传入单独的string参数,以逗号分开。
    如 void f(String... strs),则调用f(new String[]{"hello","world"})或者f("hello","world")都行。
    super确实是调用父类的方法。
    子类里super(a,b,keywords)的最后一个参数keywords仍然是String...类型的,除非你使用super(a,b,this.keywords) 那么就出错了。因为类里本身定义了一个ArrayList<String>的keywords