Java初学编程,关于constructor的问题

要模拟比如电视台1到10一共10个频道。打算把频道建为一个constructor,里面包含了频道号和节目的List。程序如下:
public class Program {
public int programNumber;
List<Event> eventList = new ArrayList<Event>();
}
我现在想从主函数建立这是个频道:
Program program1 = new Program();
Program program2 = new Program();
...
这样做对吗?有必要给每一个频道起一个单独的名字吗?(program1,2,3...) 还是能用一个简单的方法不用这么麻烦?求帮忙,谢谢!

可以用构造函数初始化频道号和节目,然后提供方法实现频道切换以及跳到某频道。

public class Program{
private int num;
private List<Event> eventList = new ArrayList<Event>();
/**默认构造函数*/
public Program(){
this.num = 1; //初始化频道为1.
//初始化频道列表
this.eventList.add(1);
this.eventList.add(2);
}

/**带参数的构造函数,可以初始化指定频道和频道列表*/
public Program(int num, List<Event> eventList){
this.num = num;
this.eventList = eventList;
}

/**检查并设置当前频道号.如果num超出内置的频道数目,将当前频道设置为1*/
private void checkNum(int num){
if(num > this.eventList.size()){
this.num = 1;
}else{
this.num = num;

}
}
/**获得指定频道*/
public Event get(int num){
this.checkNum(num);
return this.eventList.get(this.num);
}
/**跳转到下一个频道*/
public Event next(){
return get(++this.num);
}
/**跳转到指定频道*/
public Event jump(int num){
return get(num);
}

}

使用时直接实例化,然后调用方法实现跳转频道:
使用无参数的构造函数:
Program p = new Program();
p.jump(2);
使用指定参数的构造函数:
List<Event> eventList = new ArrayList<Event>();
eventList.add(1);
eventList.add(2);
Program p = new Program(1, eventList);
p.get();

设计程序时,频道可能在系统启动初始化时就已经加载,这时可以考虑将eventList放到初始化类中并用静态函数存储,然而因为静态函数是系统全局的,所以在对频道进行增加、删除时需要考虑同步问题。如果采用静态函数初始化,上面的类就不适用了,需要改造一下,将频道初始化的部分全部删除,获取频道或者跳转频道时直接从静态变量中获取,如果需要修改从静态变量中获取的频道,也需要考虑数据同步的问题。

PS:上面的代码手打的,可能存在错误。。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-02-28
你写的对,这是没有错误的,因为你需要的是不同的对象,所以你就必须创建那么多的对象,不过你可以简写,例如可以这样去思考 你把台号作为Program的一个构造参数,因为台是有规律的那么你就可以通过一个for循环控制对象的生成了啊最后将生成的对象放到一个list中了 for(int i=0;i<=9;i++){
list.add(new Program( i));
}
i 是台号的参数
明白吗 ,其实道理是一样的 只是简写了而已追问

谢谢你的回答,我也是觉得把所有program放到一个list比较好,我还有一点小问题~
List这个概念我还没应用过,把这些生成的(频道)对象放到一个List中,那我再调用其中一个频道和频道中的节目List怎么办呀?两个List有点晕了。。。

追答

这个问题 你完全没有必要使用两个list来封装了,你可以把频道封装成一个对象,而频道中的节目封装成频道的一个属性,来通过get set方法来设置节目,然后把频道作为对象传到list当中去,这样你才能方便的进行操作和运算,这也是面向对象的思维啊,如果你把他们分开存的话,必须要建立起关系才行,这个东西你现在根本没有必要考虑,后面在数据库中才会接触表之间的关系,你现在就只要存一种对象就行了!!!用两个list这不是正确的方法,也不是正确的思维!!

本回答被提问者和网友采纳
第2个回答  2013-02-28
你想做什么?for循环可以生成多个
第3个回答  2013-02-28
里面哪有structor啊?

Java初学编程,关于constructor的问题
p.get();设计程序时,频道可能在系统启动初始化时就已经加载,这时可以考虑将eventList放到初始化类中并用静态函数存储,然而因为静态函数是系统全局的,所以在对频道进行增加、删除时需要考虑同步问题。如果采用静态函数初始化,上面的类就不适用了,需要改造一下,将频道初始化的部分全部删除,获取频道或者...

请问下 java constructor的作用。 这个必须要有吗
java中constructor的作用是,new对象时候调用构造函数,可以初始化对象的属性,构造函数是创建java对象的重要途径,通过new关键字调用构造器时,构造器也确实返回了该类的对象,但这个对象并不是完全由构造器负责创建的。所以构造函数是有必须存在的。每个对象有默认构造函数,如下:可以new对象。如果写带参数构造...

java构造方法 构造函数什么意思?新手我要晕了
首先构造方法就是构造函数,英文名字是constructor,接下来是作用,以下面的例子为例:class Car { public Car(int size,String name) \/\/这就是Car类的构造方法 { this.size = size;this.name = name;} String name;int size;} public class Test { public static void main(String[] args)...

达人帮忙呀,java里的constructor的意思及用途有没有人帮忙解释下的
- constructor 不可以有返回值,如果有返回值将会被视为一个普通的方法,不过与类同名。但是在constructor 里可以写return语句,public A(){return;} 是允许的。- 在子类调用其constructor的时候,compliler会自动为其加上super();所以如果父类中没有显示的申明不带 参的构造函数,将会有编译错误。

Java中的构造函数Constructor怎么用?
1.它的函数名与类名相同;2.它可以重载;3.不能指定返回类型,即使是void也不行;4.虽然在一般情况下,构造函数不被显式调用,而是在创建对象时自动被调用。但是并不是不能被显示调用。有些时候是一定要显示调用的,只要是父类有带参的构造函数,在子类中就必须显示的调用父类的构造函数,因为子类...

Constructor概况
构造函数在对象创建或者实例化时被调用的方法。在Java中,构造函数与类同名,主要用于初始化数据成员和分配所需资源。构造函数可以有参数,也可以没有,用于创建对象的不同状态。构造函数不能被继承,因此不能被重写(Overriding)。这意味着子类不能改变父类构造函数的行为。然而,构造函数可以被重载(Over...

在JAVA编程中,出现问题。提示为:The constructor Indivi() is not...
看看Indivi是不是public类型的,有没有不带参数的构造函数,该构造函数一定是public类型的,不能私有类型,因为你是在不同的包中使用的 import code.ind.Indivi;在看看是不是包引错了。等等 要好好的看看 实在不行的话,你给两个类放在一个包中在试试,如果成功,就说明是你的包的问题,否则就是...

编程+英语高手进[英语语法问题]: "Effective Java"里面的一段话不太...
搜索了一下 static factory method,constructor 这段话完全是编程专业术语,给我中文也无法理解意思,但是看语法大概知道在说什么。我可能会解释错。首先这个一定是不是中国人写的,所以非常的外国风格,用法和语法看起来有些奇怪是正常的,但是正确的,简单说就是写得太地道了所以导致不太看得懂。1、to...

java中的Protected Constructors构造方法的作用是什么,为什么要定义...
用protected修饰构造器方法是为了限制一些访问的类,这样修饰的后果是只有在同一个包中的类或者是子类才能访问这个构造器,只是因为public 太不安全的原因,这样可以排除非本包或本类子类的访问。

关于JAVA中的方法
构造方法:每创建一个类的实例都去初始化它的所有变量是乏味的。如果一个对象在被创建时就完成了所有的初始工作,将是简单的和简洁的。因此,Java在类里提供了一个特殊的成员函数,叫做构造函数(Constructor)。成员方法:一个构造函数是对象被创建时初始对象的成员函数。它具有和它所在的类完全一样的...

相似回答