形式一:class Instrument
{
public void play(Note n)
{
System.out.println("instrument.play()");
}
}
public class Wind extends Instrument
{
public void play(Note n)
{
System.out.println("Wind.play()"+n);
}
}
形式二:class Instrument
{
public void play(Note n)
{
System.out.println("instrument.play()");
}
}
问题:形式一中Instrument类和形式二中的Intrument类本质上有区别吗,
没有的话, 为什么同一包中的另一个类中比如Music类中的方法
public static void tune(Instrument i)
{
i.play();
}
用形式二可以,而形式一却不可以。这不都是包访问权限吗?初学Java,望多加指教
{
public void play(Note n)
{
System.out.println("instrument.play()");
}
}
public class Wind extends Instrument
{
public void play(Note n)
{
System.out.println("Wind.play()"+n);
}
}
形式二:class Instrument
{
public void play(Note n)
{
System.out.println("instrument.play()");
}
}
问题:形式一中Instrument类和形式二中的Intrument类本质上有区别吗,
没有的话, 为什么同一包中的另一个类中比如Music类中的方法
public static void tune(Instrument i)
{
i.play();
}
用形式二可以,而形式一却不可以。这不都是包访问权限吗?初学Java,望多加指教
{
i.play(Note.C_SHARP);
}
忘加参数了。
但这不是问题所在之处,望指教
你是不是把Music写成public的了
一个类中只能有一个public的类,与类名相同
估计你参数传错了
如果你执行形式一中的Wind或Instrument的play()会打印wind.play
而形式二执行的是Instrument.play()
形式二里面因为没有定义其他的public类 所以Instrument被默认为主类所以可以被访问
不明白你究竟要问什么问题
上面解释得很清楚。
public enum Note
{
ZHANG,YANG;
}
class Instrument
{
public void play(Note n)
{
System.out.println("Instrument play()"+n);
}
}
public class Wind extends Instrument
{
public void play(Note n)
{
System.out.println("Wind play()"+n);
}
}
public class Music
{
public static void tune(Instrument i)
{
i.play(Note.ZHANG);
}
public static void main(String[] args)
{
Instrument first = new Wind();
tune(first);
}
}谁能把它编译不过的原因找出来。为什么这种形式不行,而用把Instrument类单独出去就可以。!!!!
结果:
Wind play()ZHANG
我有Eclipse 但没使用。
形式一和形式二差别在于,形式一有一个子类继承Instrument,子类中public void play(Note n)方法覆盖了基类中的public void play(Note n)方法,所以很多能是这的问题。
Instrument first = new Wind();不知道子类继承Instrument有什么用,作用也吸是输出Wind play()+n
为什么如果不先编译Wind类就不能编译Music类,难道Instrument之前对于Music类是不可见的吗。
IDE会对使用到得类进行自动编译,所以不用自己全部编译。
{
public void play(Note n)
{
System.out.println("Instrument play()"+n);
}
}
public class Wind extends Instrument
{
public void play(Note n)
{
System.out.println("Wind play()"+n);
}
}
{
public void play(Note n)
{
System.out.println("Instrument play()"+n);
}
}
public class Wind extends Instrument
{
public void play(Note n)
{
System.out.println("Wind play()"+n);
}
}