一个java程序问题?
请问这个程序怎么改才能改的正确,我知道是错误的,但现在不知道该怎么改了,请高手指点一下 interface Playable { void play(); } interface Bounceable { void play(); } interface Rollable extends Playable, Bounceable { Ball ball = new Ball("PingPang"); } class Ball implements Rollable { private String name; public String getName() { return name; } public Ball(String name) { = name; } public void play() { ball = new Ball("Football"); intln( tName()); } }
程序代码: interface Playable { void play(); } interface Bounceable { void bounce(); } interface Rollable extends Playable, Bounceable { void roll(); } class Ball implements Rollable { private String name; public String getName() { return name; } public Ball(String name) { = name; } public Ball(){ } public void play() { intln("I am playing!!"); } public void bounce(){ intln("I am bouncing!"); } public void roll(){ intln("I am rolling!"); } public static void main(String[] args){ Rollable ball=new Ball(); ay(); unce(); ll(); } } 这样就可以运行了,仔细体会一下接 口的定义和作用 ================================================= public Ball(String name) { = name; } Rollable ball=new Ball(); ================================================= 首先要弄清除为什么说JAVA没有了多继承要比C++更加简单和强壮 如果说 ClassA 和 ClassB 都拥有 void hello(){} 方法,而ClassC去同时继承ClassA与ClassB,那么你认为ClassC会执行A的方法还是B的呢? 这就是一个很典型的多继承的弊病 所以JAVA决定废弃这个功能从而获取更健壮的语法 看现在,InterfaceA 和 InterfaceB 都定义有 void hello(); 方法,而ClassX同时实现了接口A和B,那么ClassX会实现的是A的方法呢还是B的方法呢? 其实动动脑就知道,这两个方法都是一样的,我实现那个不可以? 扩展一下 如果InterfaceA定义的是 String hello();方法 而 InterfaceB定义的是 void hello(); 方法,那么ClassX又该怎么办呢?---很简单,编译出错。
。
错误行:倒数第四行! 错误描述:cannot assign a value to final varible (不能为一个final变量重新赋值) 原因:1。用final修饰的变量,一经赋值就不能更改! 2。
在接口里面定义了变量,就相当于是用final修饰了,其值也不能改变!类也是一种数据类型,所以ball也是变量。 3。一般在接口内只定义没有主体的方法,不要求实现! 改正:倒数第四行更改为:Ball ball=new Ball("Football"); 还要在Ball类里加上main方法: pubic static void main(String[] args) { ay(); } 运行结果是打印出football。
也可直接将倒数第四行去掉, 运行结果是打印出pingpong。
答:ublic class Max3abc { public static void main(String args[]) { int a=2,b=1,c=3; ...详情>>
答:google "java 缓冲池"详情>>
答:百度里搜张孝祥 非常好的视频教程详情>>