您的位置:

java多态的一些陷阱(java多态案例)

本文目录一览:

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中多态的缺点?

多态主要体现在方法重载和方法的重写上,一般来说,多态的出现是为了弥补之前单一的方法调用,觉得就是为了方便扩展而出现的,如果你抹掉不用,就没有优缺点可言了。如果多态发挥的尽情的话,对于学习它或是使用它的人来说,是比较容易混淆的(因为只有开发人员才知道各个方法的具体用途),但可以减少很多冗余代码~~一般越高级的程序,对某一特性就发挥的越淋漓尽致!