免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3042 | 回复: 4
打印 上一主题 下一主题

求高人帮我编一个程序 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-10-31 09:32 |只看该作者 |倒序浏览
利用多态性编程,创建一个Square类,实现求三角形,正方形和圆形面积。方法:抽象出一个
共享父类,定义一个函数为求面积的公共界面,再重新定义各形状的求面积函数,在主类中创建
不同类的对象,并求得不同形状的面积。

论坛徽章:
0
2 [报告]
发表于 2008-10-31 16:48 |只看该作者
先帮你顶一下

论坛徽章:
0
3 [报告]
发表于 2008-10-31 21:39 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
4 [报告]
发表于 2008-11-12 10:51 |只看该作者
多态性啊,是不是构造方法那里的啊
搞一个class Square
然后建立3个构造方法
Square(边长1,边长2){}  //对应长方形
Square(底,高)//对应3角型
Square(半径)//对应圆形


我也初学,大概是这么弄吧

论坛徽章:
0
5 [报告]
发表于 2008-11-12 15:32 |只看该作者

作业贴?

给楼主一个参考吧:
Shape.java
abstract class Shape {
    public abstract void showShape();
}

Square.java
public class Square extends Shape {
    public void showShape() {
        System.out.print("The Square:");
    }
    public void calc(long a,long b) {
        System.out.println(a * b);
    }
}

Triangle.java
public class Triangle extends Shape {
    public void showShape() {
        System.out.print("The Triangle:");
    }
    public void calc(long a,long b) {
        System.out.println(a * b / 2);
    }
}

Test.java
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class Test {
    public static void main(String[] args) {
        Shape triangle = new Triangle();
        Shape square = new Square();
//        Shape circular = new Circular(); //这个试试自己去实现


        Triangle a = new Triangle();
        Square b = new Square();
//        Circular c = new Circular(); //这个试试自己去实现


        doShowIt(triangle, 2, 4);
        doShowIt(square, 2, 4);
        // doShowIt(circular, 2); //这个试试自己去实现


        System.out.println();

        doShowIt(a, 2, 4);
        doShowIt(b, 2, 4);
        // doShowIt(c, 2); //这个试试自己去实现

    }

    public static void doShowIt(Shape shape, long a, long b) {// 这里,用抽象类,再来点反射


        shape.showShape();
        
        try {

            // 参数值

            Object[] value = new Object[] { a, b };
            
            // 参数类型

            Class parm[] = new Class[] { long.class, long.class };
            
            // 得到类

            Class c = shape.getClass();
            
            // 创建类对象

            Object object = c.newInstance();
            
            // 得到方法对象

            Method method = object.getClass().getDeclaredMethod("calc", parm);
            
            // 调用方法

            method.invoke(object, value);

        } catch (SecurityException e) {

            e.printStackTrace();
        } catch (NoSuchMethodException e) {

            e.printStackTrace();
        }

        catch (InstantiationException e) {

            e.printStackTrace();
        } catch (IllegalAccessException e) {

            e.printStackTrace();
        } catch (IllegalArgumentException e) {

            e.printStackTrace();
        } catch (InvocationTargetException e) {

            e.printStackTrace();
        }

    }
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP