1、java实验代码实验任务任务1需求:具有照像功的设备:手机Phone,数码照像机Camera,平板电脑Tablet pc请遵循 照像功能Photographable实现takePhoto的功能。实现效果图如下:代码如下:各种设备终端的抽象类package takePhoto;public abstract class Equipment private String name; public Equipment(String name) super(); public String getName() return name; public void setName(String name)
2、this.name = name; 定义一个照相功能的接口package takePhoto;public interface TakePhoto public abstract void TakePhotos();定义一个手机的类继承设备类并且实现照相接口package takePhoto;public class Phone extends Equipment implements TakePhoto public Phone(String name) super(name); System.out.println(-有参-+name); public void TakePhotos()
3、System.out.println(getName()+:像素低); System.out.println(getName()+有傻瓜照相功能,还能打电话); 定义一个照相机的类继承设备类并且实现照相接口package takePhoto;public class Camera extends Equipment implements TakePhoto public Camera(String name) super(name); System.out.println(-有参-+name); Override public void TakePhotos() System.out.prin
4、tln(getName()+:像素很高); System.out.println(getName()+有夜间模式、微距模式等); 定义一个平板的类继承设备类并且实现照相接口package takePhoto;public class TabletPC extends Equipment implements TakePhoto public TabletPC(String name) super(name); System.out.println(-有参-+name); Override public void TakePhotos() System.out.println(getName()
5、+:像素还行); System.out.println(getName()+屏幕大,看得爽,还能玩高清游戏); 测试代码并显示结果package takePhoto;public class Test public static void main(String args) Phone p1 = new Phone(诺基亚); p1.setName(诺基亚); p1.TakePhotos(); Phone p2 = new Phone(小米); p2.setName(小米); p2.TakePhotos(); Camera c = new Camera(索尼数码); c.setName(索尼数
6、码); c.TakePhotos(); TabletPC t = new TabletPC(ipad); t.setName(ipad); t.TakePhotos(); 任务2在几何图形中,按图形的几何维数分为平面图和立体图,所有的平面图都能计算周长和面积,所有的立体图都能计算表面积和体积.定义Shape2D和Shape3D接口,分别描述平面图和立体图的特征和行为,在Shape2D中定义计算周长和面积的方法,Shape3D继承Shape2D接口,新增计算体积的方法,定义Circle圆类和Sphere球类,分别实现Shape2D和Shape3D接口。代码如下:定义一个2D图形的接口packag
7、e Shape;public interface Shape2D abstract double Grith(double r); abstract double Area(double r);定义一个3D图形的接口package Shape;public interface Shape3D extends Shape2D abstract double Volume(double r);圆的类实现2D接口package Shape;public class Circle implements Shape2D private double r; public double getR() ret
8、urn r; public double Grith(double r) return 3.14 * 2 * r; public double Area(double r) return 3.14 * r * r; 圆的球实现3D接口package Shape;public class Ball implements Shape3D double r; public double getR() return r; public double Area(double r) return 4 * 3.14 * r * r; public double Volume(double r) return
9、 (4.0 / 3.0) * r * r * r; Override public double Grith(double r) return 2 * 3.14 * r; 测试类并且输出显示package Shape;import java.util.Scanner;public class Test public static void main(String args) System.out.println(求圆的参数请输入1,求球的参数请输入2:); Scanner a = new Scanner(System.in); int a1 = a.nextInt(); if (a1 = 1)
10、 Circle c = new Circle(); System.out.println(请输入圆的半径:); double r = a.nextDouble(); System.out.println(圆的周长为: + c.Grith(r); System.out.println(圆的面积为: + c.Area(r); else Ball b = new Ball(); System.out.println(请输入球的半径:); double r = a.nextDouble(); System.out.println(球的周长为: + b.Grith(r); System.out.prin
11、tln(球的面积为: + b.Area(r); System.out.println(球的体积为: + b.Volume(r); 3.某公司的雇员分为以下若干类:Employee:这是所有员工总的父类,属性:员工的姓名,员工的生日月份。方法:getSalary(int month) 根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100元。SalariedEmployee:Employee的子类,拿固定工资的员工。属性:月薪HourlyEmployee:Employee的子类,按小时拿工资的员工,每月工作超出160小时的部分按照1.5倍工资发放。属性:每小时的工资、每月工作的小时数
12、SalesEmployee:Employee的子类,销售人员,工资由月销售额和提成率决定。属性:月销售额、提成率BasePlusSalesEmployee:SalesEmployee的子类,有固定底薪的销售人员,工资由底薪加上销售提成部分。属性:底薪。写一个程序,把若干各种类型的员工放在一个Employee数组里,写一个函数,打印出某月每个员工的工资数额。注意:要求把每个类都做成完全封装,不允许非私有化属性。代码如下:员工的基本类package Company;public class Employee String name; int month; float salary; public
13、Employee(String name, int month) this.name = name; this.month = month; public float getSalary(int month) if (this.month = month) return 100; else return 0; SalariedEmployee:Employee的子类,拿固定工资的员工。属性:月薪package Company;public class SalariedEmployee extends Employee float salary; public SalariedEmployee(
14、String name, int month,float salary) super(name, month); this.salary=salary; public float getSalary(int month) return salary + super.getSalary(month); HourlyEmployee:Employee的子类,按小时拿工资的员工,每月工作超出160小时的部分按照1.5倍工资发放。属性:每小时的工资、每月工作的小时数package Company;public class HourlyEmployee extends Employee int hour
15、; float salary; public HourlyEmployee(String name, int month, int hour, float salary) super(name, month); this.hour = hour; this.salary = salary; public float getSalary(int month) if (hour 160) return (float) (salary * 160 + (hour - 160) * salary * 1.5 + super.getSalary(month); else return salary *
16、hour + super.getSalary(month); SalesEmployee:Employee的子类,销售人员,工资由月销售额和提成率决定。属性:月销售额、提成率package Company;public class SalesEmployee extends Employee float sum; float rate; public SalesEmployee(String name, int month, float sum, float rate) super(name, month); this.sum = sum; this.rate = rate; public f
17、loat getSalary(int month) return rate * sum + super.getSalary(month); BasePlusSalesEmployee:SalesEmployee的子类,有固定底薪的销售人员,工资由底薪加上销售提成部分。属性:底薪。package Company;public class BasePlusSalesEmployee extends SalesEmployee float salary; public BasePlusSalesEmployee(String name, int month, float salary,float s
18、um, float rate) super(name, month, sum, rate); this.salary=salary; public float salary(int month) return salary+sum*rate+super.getSalary(month); 测试类输出显示package Company;public class Test public static void main(String args) Employee a = new Employee4; a0 = new SalariedEmployee(张三, 4, 4440); a1 = new
19、HourlyEmployee(李四, 3, 224,30); a2 = new SalesEmployee(王五, 7, 50000, 0.1f); a3 = new BasePlusSalesEmployee(周六, 12, 2500, 64500, 0.1f); System.out.println(张三的工资为: + a0.getSalary(7); System.out.println(李四的工资为: + a1.getSalary(7); System.out.println(王五的工资为: + a2.getSalary(7); System.out.println(周六的工资为: + a3.getSalary(7);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1