本文目录一览:
java 多态里的些错误
一个Java文件中有且只能有一个public修饰的类
第一个错误:
public static void main(String[] args)所在的那个类为主类,就是用public修饰的类
第二个错误
public void draw(){
System.out.println("Square.draw()");
public void p(){
System.out.println("here is Triangle");
}
}
你在draw()方法中又写了一个p()方法,这是不行的,方法可以调用方法,但不可以嵌套方法。这个应该是书写错误,所以提示你非法的表达式开始
第三个:
case 0 : return new Circle();
case 1 : return new Square();
case 2 : return new Triangle();
你那个Circle类是哪里来的?还有那个Triangle类是哪里的,所以会提示找不到符号
第四个:
System.out.println("here") 这一句没有用分号结束
第五个:
switch(rand.nextInt(3)){
default:
case 0 : return new Circle();
case 1 : return new Square();
case 2 : return new Triangle();
}
default以后什么也没有,在这里就是什么也不做.没有break语句,所以如果产生的值是0的话,那么下面那两个语句也会被执行。
楼主可以参考这些改进一下自己的程序!
下面是修改以后的示例代码,你可以自己完善一下
import java.util.*;
class Shape
{
public void draw(){}
public void p()
{
System.out.println("here");
}
}
class Square extends Shape
{
public void draw()
{
System.out.println("Square.draw()");
}
public void p()
{
System.out.println("here is Triangle");
}
}
class RandomShapeGenerator{
Square obj;
private Random rand = new Random(47);
public Shape next()
{
switch(rand.nextInt(3))
{
default: System.out.println("OK");
//case 0 : return new Circle();break;
case 1 : obj=new Square();break;
//case 2 : return new Triangle();break;
}
return obj;
}
}
public class Shapes
{
private static RandomShapeGenerator gen = new RandomShapeGenerator();
public static void main(String[] args)
{
Shape[] s = new Shape[9];
for(int i = 0;is.length;i++)
s[i] = gen.next();
for(Shape shp : s)
{
shp.draw();
shp.p();
}
}
}
Java中多态的优缺点是什么?
多态的好处:扩展性强,父类的变量可以赋值不同的子类对象,而调用不同的子类重写的方法
多态的弊端:不能使用子类特有的功能
这就是Java多态的优缺点了,想学习Java,自学看黑马程序员,有视频,有学习路线,让你学习不迷茫!
请教 Java中多态的缺点?
多态主要体现在方法重载和方法的重写上,一般来说,多态的出现是为了弥补之前单一的方法调用,觉得就是为了方便扩展而出现的,如果你抹掉不用,就没有优缺点可言了。如果多态发挥的尽情的话,对于学习它或是使用它的人来说,是比较容易混淆的(因为只有开发人员才知道各个方法的具体用途),但可以减少很多冗余代码~~一般越高级的程序,对某一特性就发挥的越淋漓尽致!