A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 钟林杰 中级黑马   /  2013-4-14 08:46  /  1594 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*
每日一题之面向对象编程
今天这道题目有点难哦,主要考察的是面向对象编程的多态性,大家一起来试试吧,看看你是否能写出不一样的代码!
题目:父类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();                                                                                                                                                                                        //通过给定的参数实现动态联编
        }
}

3 个回复

倒序浏览
来看看,你的想法是咋样的
回复 使用道具 举报
{:soso_e123:}居然没有一个人回答!!
回复 使用道具 举报
本帖最后由 李尧 于 2013-4-15 17:07 编辑

卤煮,这我不会.我决定这次直接看你的代码.
好吧..被你那个动态联编技术给吓到了....{:soso_e103:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马