java 类的继承和多态 1

来源:互联网 发布:淘宝店铺首页链接地址 编辑:程序博客网 时间:2024/06/06 16:47

1,设计一个抽象类,声明有关算术运算的方法,并创建一个子类继承该抽象的类,完成有理数的加、减、乘、除四则运算。

package a;public class YouLiShu {    int fz,fm;    public YouLiShu(){}    public YouLiShu(int fz, int fm) {        int ys=this.maxYueShu(fz, fm);              this.fz = fz/ys;        this.fm = fm/ys;    }       public YouLiShu jia(YouLiShu a){        int newfz=this.fz*a.fm+this.fm*a.fz;        int newfm=this.fm*a.fm;             return new YouLiShu(newfz/maxYueShu(newfz,newfm),newfm/maxYueShu(newfz,newfm));    }    public YouLiShu jian(YouLiShu a){                       int newfz=this.fz*a.fm-this.fm*a.fz;        int newfm=this.fm*a.fm;             return new YouLiShu(newfz/maxYueShu(newfz,newfm),newfm/maxYueShu(newfz,newfm));    }    public YouLiShu cheng(YouLiShu a){        int newfz=this.fz*a.fz;        int newfm=this.fm*a.fm;         return new YouLiShu(newfz/maxYueShu(newfz,newfm),newfm/maxYueShu(newfz,newfm));    }    public YouLiShu chu(YouLiShu a){        int newfz=this.fz*a.fm;        int newfm=this.fm*a.fz;             return new YouLiShu(newfz/maxYueShu(newfz,newfm),newfm/maxYueShu(newfz,newfm));    }    public String toString() {        return(fz+"/"+fm);    }    public double toXiaoShu(){              return (this.fz*(1.0))/this.fm;    }    public int maxYueShu(int a,int b){          if (b==0) return a;         return maxYueShu(b,a%b);    }}package a;public class Testsy1 {    public static void main(String[] args) {        YouLiShu y1=new YouLiShu(2,4);        YouLiShu y2=new YouLiShu(2,5);        System.out.println("2/4+2/5="+y1.jia(y2).toString()+" "+y1.jia(y2).toXiaoShu());        System.out.println("2/4-2/5="+y1.jian(y2).toString()+" "+y1.jian(y2).toXiaoShu());        System.out.println("2/4*2/5="+y1.cheng(y2).toString()+" "+y1.cheng(y2).toXiaoShu());        System.out.println("2/4 / 2/5="+y1.chu(y2).toString()+" "+y1.chu(y2).toXiaoShu());    }}

2,编写一个ComputerAverage抽象类,类中有一个抽象方法求平均分average,可以有参数。定义Gymnastics类和School类,它们都是ComputerAverage的子类,Gymnastics类中计算选手的平均成绩的方法是去掉一个最低分,去掉一个最高分,然后求平均分。School中计算平均分的方法是直接是总分除以总科目。
要求:定义ComputerAverage的对象为上转型对象,并调用重写的方法averge。

package b;public abstract class ComputerAverage {    public abstract double average(double[] s);}package shiyan3;public class Gymnastics extends ComputerAverage{    public double average(double s[]) {        for(int i=0;i<s.length-1;i++)        {            for(int j=i;j<s.length-1;j++)            {                if(s[i]>s[i+1])                {                    double t=s[i];                    s[i]=s[i+1];                    s[i+1]=t;                }            }        }        double a=0.0;        for(int i=1;i<s.length-1;i++)        {            a+=s[i];        }        a=a/(s.length-2);        return a;    }}package b;public class School extends ComputerAverage{    public double average(double s[]) {        double a=0.0;        for(int i=0;i<s.length;i++)        {            a+=s[i];        }        a=a/(s.length);        return a;    }}package b;public class Testsy3 {    public static void main(String[] args) {        double[] c={2.2,3.4,5.6,6.2,1.4};        ComputerAverage a=new Gymnastics();        ComputerAverage b=new School();        System.out.println(a.average(c));        System.out.println(b.average(c));    }}

3,编写一个类,该类有如下一个方法:
public int f(int a,int b){……//要求该方法将返回a和b的最大公约数},再编写一个该类的子类,要求子类重写方法f(),而且重写的方法将返回两个正整数的最小公倍数。
要求:在重写的方法的方法体中需要调用被隐藏的方法返回a和b的最大公约数m,然后将(a*b/m)返回;在应用的程序的主类中分别使用父类和子类创建对象,并分别调用方法f()计算两个正整数的最大公约数和最小公倍数。

package c;public class Maxgys {    int a;    int b;    Maxgys(int a,int b){        this.a=a;        this.b=b;    }    int f(){        int m=a;        int n=b;        if(m<n)        {            int t=n;            n=m;            m=t;        }        while(m%n!=0)        {            int t=m%n;            m=n;            n=t;        }        return n;    }}package c;public class Mingbs extends Maxgys{    Mingbs(int a, int b) {        super(a, b);    }    int f()    {        return a*b/super.f();    }}package shiyan2;public class Testsy2 {    public static void main(String[] args) {        Maxgys a=new Maxgys(6,9);        Mingbs b=new Mingbs(9,12);        System.out.println(a.f());        System.out.println(b.f());    }}
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 小孩不小心打伤了老师怎么办 高考进了三段怎么办 工作中和领导产生冲突怎么办 酒店不给员工发工资怎么办 裙子没有解开超市的锁怎么办 接待老外听不懂他说的怎么办 脚脱皮又痒又臭怎么办 成都应聘平面模特被骗了怎么办 文明6开场一堆蛮族怎么办 幼儿园里出了水痘怎么办 穿高跟鞋脚容易出汗怎么办 粗跟鞋走路太响怎么办 粗跟鞋鞋跟很响怎么办 皮鞋跟走路太响怎么办 穿高跟鞋脚崴了怎么办 高跟鞋小了一码怎么办 高跟皮鞋磨脚怎么办 大同同煤集团三供一业人员怎么办 小孩被猫咪抓了怎么办 长得特别丑的人怎么办 锅巴放的不脆了怎么办 淘宝买到假货了怎么办 单位不给解约函怎么办 安卓个人热点打不开怎么办 密码忘记无法进入主机怎么办 流放之路w10闪退怎么办 电脑网站被劫持了怎么办 苹果手机浏览器被劫持怎么办 苹果手机网站被劫持怎么办 a37手机网站被劫持怎么办 耳朵被震的耳鸣怎么办 液晶电视怎么办断屏坏还是逻辑板 门保险拧坏了怎么办 锁的保险坏了怎么办 鞋子里面长霉了怎么办 塑料瓶盖滑丝了怎么办? 塑料杯盖滑丝了怎么办 洗衣机上的订子很难扭出来怎么办 滚筒洗衣机坏了打不开门怎么办 海尔滚筒洗衣机打不开门怎么办 格兰仕滚筒洗衣机门打不开怎么办?