抽象类能否产生实例(对象),<>上说不安全,但是在相关例子(代码)里面却有产生抽象类的代码存在,看不明白.
在书<<JAVA 编程思想>> 第二版,231页说产生抽象类对象是不安全的,
可是在233页的下面却有产生抽象类对象的代码存在,
// 232 页的抽象类定义
abstract class Instrument{
int i;
public abstract void play();
public String what(){
return "Instrument";
}
public abstract void adjust();
}
// 233 页的产生抽象类的代码.
public class Music4{
...
...
..
public static void main(String[] args){
Instrument[] orchestra = new Instrument[5];
...
...
..
}
}
这不是前后矛盾吗? 晕..
我自已另写的一简单代码做测试.
//
abstract class actor{}
class hiactor extends actor{
public void act() {
System.out.println("in hiactor.act()");
}
public static void play(actor n) {
((hiactor)n).act();
}
}
public class actors{
public static void main(String[] args){
actor ac=new actor(); //编译时这行报错
//hiactor s=new hiactor();
//s.play(ac);
hiactor.play(ac);
}
}
用J2SE的编译器报错提示: actor is abstract; cannot be instantiated
actor ac=new actor();
按提示应该是不能产生抽象类对象了,那书上的那段代码是有问题了,还是其他原因....
请大家帮助我理清这个思路.能否产生抽象类?