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
- java 类的继承和多态 1
- java的继承和多态
- java继承和多态的理解
- (Java)类的封装、继承和多态
- Java类的封装、多态和继承
- java 类的继承和多态 2
- Java继承和多态===Java继承中方法的覆盖和重载
- Java继承和多态
- java继承和多态
- Java继承和多态
- 【Java】继承和多态
- JAVA继承和多态
- Java继承和多态
- java继承和多态
- java 继承和多态
- #Java#继承和多态
- java继承和多态
- 【Java】Java的继承和多态详解
- Android尺子
- 安卓学习摘要--适配器
- HTML5简介
- 手机开发实战117——蓝牙介绍1
- 从今天起,刷题看数据结构算法——leetcode题 two sum
- java 类的继承和多态 1
- 手机开发实战118——蓝牙介绍2
- 深入学习java并发编程:内存模型(五)锁
- 手机开发实战119——蓝牙介绍3
- Matlab画图,去掉周围白边
- hdu 2619 Love you Ten thousand years(数论,待解决)
- 手机开发实战120——蓝牙介绍4
- 剑指offer(五十三)之按之字形顺序打印二叉树
- java/android 设计模式学习笔记(9)---代理模式