一个关于JAVA的疑问

Xeon-Shao 2011-12-01 06:05:17
这是一个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);
}
}
我想问的就是。为什么后面的多个参数读不进去,如何能读进去呢,求指教
...全文
91 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lizhaojun1990 2011-12-13
  • 打赏
  • 举报
回复
参数是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
Xeon-Shao 2011-12-02
  • 打赏
  • 举报
回复
无比感谢,但我还想问一下,为什么super不应该是调用父类的方法吗,父类的构造方法里,后面是输入多个参数,而子类里super(a,b,keywords),后面不是读入了一个数组了吗?参数类型这不是不一致了吗?
lizhaojun1990 2011-12-01
  • 打赏
  • 举报
回复
原因是构造函数里没有对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)三个参数

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧