class Shape{
void draw(){
System.out.println("画法");
}
void erase(){
System.out.println("擦出");
}
}class Circle extends Shape{
void draw(){
System.out.println("circle.draw()");
}
void erase(){
System.out.println("circle.erase()");
}
}class Square extends Shape{
void draw(){
System.out.println("square.draw()");
}
void erase(){
System.out.println("square.erase()");
}
}
class Triangle extends Shape{
void draw(){
System.out.println("triangle.draw()");
}
void erase(){
System.out.println("triangle.erase()");
}
}
public class DongTaiBangDing {
public static Shape randShape(){ //此处 提示 this method must return a type of Shape,该怎么改呢???(知道这是 要 返回 一个Shape 类型 变量的意思;)
switch((int)(Math.random()*3)){
case 0: return new Circle();
case 1: return new Square();
case 2: return new Triangle();
}
}
public static void main(String args[]){
Shape[] s=new Shape[9];
for(int i=0;i<s.length;i++){
s[i]=randShape();
}
for(int j=0;j<s.length;j++){
s[j].draw();
}
}
}
void draw(){
System.out.println("画法");
}
void erase(){
System.out.println("擦出");
}
}class Circle extends Shape{
void draw(){
System.out.println("circle.draw()");
}
void erase(){
System.out.println("circle.erase()");
}
}class Square extends Shape{
void draw(){
System.out.println("square.draw()");
}
void erase(){
System.out.println("square.erase()");
}
}
class Triangle extends Shape{
void draw(){
System.out.println("triangle.draw()");
}
void erase(){
System.out.println("triangle.erase()");
}
}
public class DongTaiBangDing {
public static Shape randShape(){ //此处 提示 this method must return a type of Shape,该怎么改呢???(知道这是 要 返回 一个Shape 类型 变量的意思;)
switch((int)(Math.random()*3)){
case 0: return new Circle();
case 1: return new Square();
case 2: return new Triangle();
}
}
public static void main(String args[]){
Shape[] s=new Shape[9];
for(int i=0;i<s.length;i++){
s[i]=randShape();
}
for(int j=0;j<s.length;j++){
s[j].draw();
}
}
}
去掉static
如果去掉main 里面的static ,the selectiong does not support the mode
new DongTaiBangDing().randShape();
public static Shape randShape(){
Shape t=new Shape();
switch((int)(Math.random()*3)){
//case 0: return new Circle();
//case 1: return new Square();
//case 2: return new Triangle();
case 0:
t=new Circle();
break;
case 1:
t=new Square();
break;
case 2:
t=new Triangle();
break;
}
return t;
}
出来以下结果
triangle.draw()
circle.draw()
triangle.draw()
circle.draw()
circle.draw()
square.draw()
triangle.draw()
triangle.draw()
circle.draw()
直接写 return new 类名 ,不可以?
case 1: return new Square();
case 2: return new Triangle();这么写,就不符合编译器的规则了,明摆着返回的类型是Circle,Square和Triangle,而方法声明要求的类型是Shape。