/*
每日一题之面向对象编程
今天这道题目有点难哦,主要考察的是面向对象编程的多态性,大家一起来试试吧,看看你是否能写出不一样的代码!
题目:父类Shape定义如下,要求用Square(正方形)和Circle(圆形)继承Shape并实现其抽象方法(只需打印出面积和中心坐标x,y即可),
并需要用动态联编技术实现。
abstract class Shape
{
int x , y;
Shape(int x , int y){this.x = x; this.y = y;}
abstract void Draw();
}
我程序的运行结果如下:
正方形的面积 = 400
中心坐标是:(10,10)
圆的面积 = 1256.0
中心坐标是:(10,10)
(要看我的答案请先提交你的代码哦!)
*/
abstract class Shape //定义抽象形状类
{
int x , y;
Shape(int x , int y){this.x = x; this.y = y;}
abstract void Draw();
}
class Square extends Shape //正方形类继承形状类
{
int len ;
Square(int x , int y ,int len){super(x,y); this.len = len; }
void Draw(){System.out.println("正方形的面积 = " + (len*len) + "\n" + "中心坐标是:" + "("+ x +","+ y +")");}
}
class Circle extends Shape //圆形继承形状类
{
int r;
Circle(int x , int y ,int radius){super(x,y); this.r = radius;}
void Draw(){System.out.println("圆的面积 = "+(r*r*3.14)+"\n" + "中心坐标是:" + "("+ x +","+ y +")");}
}
class DynamicBinding
{
public static void main(String args[])
{
ShapeDraw(new Square(10,10,20)); //将Square的匿名类初始化传给基类
ShapeDraw(new Circle(10,10,20)); //将Circle的匿名类初始化传给基类
}
public static void ShapeDraw(Shape s)
{
s.Draw(); //通过给定的参数实现动态联编
}
}
|
|