1、编写一个Java应用程序,该程序包括3个类:Monkey类、People类和主类E。
要求:
(1) Monkey类中有个构造方法:Monkey (String s),并且有个public void speak()方法,在speak方法中输出“咿咿呀呀…”的信息。
(2)People类是Monkey类的子类,在People类中重写方法speak(),在speak方法中输出“小样的,不错嘛!会说话了!”的信息。
(3)在People类中新增方法void think(),在think方法中输出“别说话!认真思考!”的信息。
(4)在主类E的main方法中创建Monkey与People类的对象类测试这2个类的功能。
2、编写一个Java应用程序,设计一个汽车类Vehicle,包含的属性有车轮个数wheels和车重weight。
小车类Car是Vehicle的子类,其中包含的属性有载人数loader。
卡车类Truck是Car类的子类,其中包含的属性有载重量payload。
每个类都有构造方法和输出相关数据的方法。
最后,写一个测试类来测试这些类的功能。
3、按要求编写一个Java应用程序:
(1)定义一个形状类Shape,由求周长和面积的方法。
(2)定义一个圆形类Circle,继承Shape。
(3)定义一个矩形类Rect,继承Shape。
(4)定义一个正方形类Square,继承Rect。
(5)测试。
4、编程
(1)写一个Person类,有编号id,姓名name,职位job。
构造方法带三个参数。
方法:
登陆login
注册register
自我介绍talk
(2)写一个学生Student类继承Person类,方法有:考试test
属性有:学费money
(3)写一个老师Teacher类继承Person类,
属性有 工资salary
方法有:工作work
(4)写一个测试类TestPerson,测试学生和老师
学生:姓名-张三 职位-学生 学费-18000
老师:姓名-李四 职位-老师 工资-8000
5、(1)设计一个表示二维平面上点的类Point,包含有表示坐标位置的protected类型的,成员变量x和y,获取和设置x和y值的public方法。
(2)设计一个表示二维平面上圆的类Circle,它继承自类Point,还包含有表示圆半径的protected类型的成员变量r、获取和设置r值的public方法、计算圆面积的public方法。
(3)设计一个表示圆柱体的类Cylinder,它继承自类Circle,还包含有表示圆柱体高的protected类型的成员变量h、获取和设置h值的public方法、计算圆柱体体积的public方法。
(4)建立Cylinder对象,输出其轴心位置坐标、半径、面积、高及其体积的值。
6、题目:
某公司的雇员分为以下若干类:
Employee:这是所有员工总的父类,
属性:员工的姓名,员工的生日月份。
方法:double getSalary(int month) 根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100元。
SalariedEmployee:Employee的子类,拿固定工资的员工。属性:月薪。
HourlyEmployee:Employee的子类,按小时拿工资的员工,每月工作超出160小时的部分按照1.5倍工资发放。属性:每小时的工资、每月工作的小时数。
SalesEmployee:Employee的子类,销售人员,工资由月销售额和提成率决定。属性:月销售额、提成率。
BasedPlusSalesEmployee:SalesEmployee的子类,有固定底薪的销售人员,
工资由底薪加上销售提成部分。
属性:底薪。
每个不同的员工类的重写父类的计算工资的方法 ,获取到正确的工资。
7、定义一个台灯类Lamp,有一个灯泡属性,还有一个开灯的方法。
灯泡分为红灯泡和绿灯泡,都有发光的方法。
要求:在不修改台灯代码的前提下,更换灯泡发出不同的光。
package com.practice.A;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/28 17:41
*
* 主类E的main方法中创建Monkey与People类的对象类测试这2个类的功能。
*/
public class E {
public static void main(String[] args) {
Monkey monkey = new Monkey("猴子");
People People = new People("人");
monkey.speak();
People.speak();
People.think();
}
}
package com.practice.A;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/28 17:41
*
* Monkey类中有个构造方法:Monkey (String s),
* 并且有个public void speak()方法,
* 在speak方法中输出“咿咿呀呀......”的信息。
*/
public class Monkey {
public Monkey(String s){}
public void speak(){
System.out.println("咿咿呀呀......");
}
}
package com.practice.A;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/28 17:41
*
* People类是Monkey类的子类,
* 在People类中重写方法speak(),
* 在speak方法中输出“小样的,不错嘛!会说话了!”的信息。
*/
public class People extends Monkey{
public People(String s) {
super(s);
}
public void speak(){
System.out.println("小样的,不错嘛!会说话了!");
}
/**
* 在People类中新增方法void think(),
* 在think方法中输出“别说话!认真思考!”的信息。
*/
public void think(){
System.out.println("别说话!认真思考!");
}
}
package com.practice.B;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/28 18:42
*
* Car是Vehicle的子类,其中包含的属性有载人数loader
*/
public class Car extends Vehicle{
private int loader;
public int getLoader() {
return loader;
}
public void setLoader(int loader) {
this.loader = loader;
}
public Car(){}
public void run() {
System.out.println("一路向北");
}
}
package com.practice.B;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/28 18:42
*
* 卡车类Truck是Car类的子类,其中包含的属性有载重量payload
*/
public class Truck extends Car{
private double payload;
public double getPayload() {
return payload;
}
public void setPayload(double payload) {
this.payload = payload;
}
public Truck() {
}
public void run(){
System.out.println("嗡嗡");
}
}
package com.practice.B;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/28 18:42
*
* 汽车类Vehicle,包含的属性有车轮个数wheels和车重weight
*/
public class Vehicle {
private int wheels;
private double weight;
public int getWheels() {
return wheels;
}
public void setWheels(int wheels) {
this.wheels = wheels;
}
public double getWeight() {
return weight;
}
public void setWeight(double weight) {
this.weight = weight;
}
public Vehicle(){}
public void run() {
System.out.println("嘟嘟!");
}
}
package com.practice.B;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/28 18:44
*/
public class TestCar {
public static void main(String[] args) {
Vehicle vehicle = new Vehicle();
Car car = new Car();
Truck truck = new Truck();
vehicle.run();
car.run();
truck.run();
}
}
package com.practice.C;
import static java.lang.Math.PI;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/28 19:13
*/
public class Circle extends Shape{
private int r = 5;
public double perimeter() {
return 2*r*PI;
}
public double area() {
return r*r*PI;
}
}
package com.practice.C;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/28 19:13
*/
public class Rect extends Shape{
private double length=7;
private double width=3;
public double perimeter(){
return length+width+length+width;
}
public double area() {
return length*width;
}
}
package com.practice.C;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/28 19:12
*
* 形状类Shape,求周长和面积
*/
public class Shape {
public Shape(){}
public double perimeter() {
return 0;
}
public double area() {
return 0;
}
}
package com.practice.C;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/28 19:13
*/
public class Square extends Rect{
private double Side=5;
public double perimeter(){
return Side*4;
}
public double area() {
return Side*Side;
}
}
package com.practice.C;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/28 19:13
*/
public class Test {
public static void main(String[] args) {
Circle circle = new Circle();
Rect rect = new Rect();
Square square = new Square();
System.out.println("圆周长:"+circle.perimeter());
System.out.println("圆面积:"+circle.area());
System.out.println("矩形周长:"+rect.perimeter());
System.out.println("矩形面积:"+rect.area());
System.out.println("正方形周长:"+square.perimeter());
System.out.println("正方形面积:"+square.area());
}
}
package com.practice.D;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/28 19:41
*
* Person类,有编号id,姓名name,职位job。
* 构造方法带三个参数。
* 方法:
* 登陆login
* 注册register
* 自我介绍talk
*/
public class Person {
private int id;
private String name;
private String job;
public void login(){}
public void register(){}
public void talk(){}
public Person(){}
public Person(int id, String name, String job) {
this.id = id;
this.name = name;
this.job = job;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
}
package com.practice.D;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/28 19:44
*
* 学生Student类继承Person类,方法有:考试test
* 属性有:学费money
*/
public class Student extends Person{
public Student(){
this.setName("张三");
this.setJob("学生");
this.money=18000;
}
private double money;
public void test() {}
@Override
public String toString() {
return "学生:"
+"姓名-" + this.getName() + " "
+"职位-" + this.getJob() +" "
+"学费-" + money;
}
}
package com.practice.D;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/28 19:45
*
* 老师Teacher类继承Person类,
* 属性有 工资salary
* 方法有:工作work
*/
public class Teacher extends Person {
private double salary;
public Teacher() {
this.setName("李四");
this.setJob("老师");
this.salary = 8000;
}
public void work() {
}
@Override
public String toString() {
return "老师:"
+"姓名-" + this.getName() + " "
+"职位-" + this.getJob() +" "
+"工资-" + salary;
}
}
package com.practice.D;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/28 19:46
*/
public class TestPerson {
public static void main(String[] args) {
Student student = new Student();
Teacher teacher = new Teacher();
System.out.println(student);
System.out.println(teacher);
}
}
package com.practice.E;
import static java.lang.Math.PI;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/28 20:01
*
* 表示二维平面上圆的类Circle,
* 它继承自类Point,
* 还包含有表示圆半径的protected类型的成员变量r、
* 获取和设置r值的public方法、计算圆面积的public方法
*/
public class Circle extends Point{
public double getR() {
return r;
}
public void setR(int r) {
this.r = r;
}
protected int r=5;
public double area() {
return r*r*PI;
}
}
package com.practice.E;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/28 20:02
*
* 表示圆柱体的类Cylinder,
* 它继承自类Circle,
* 还包含有表示圆柱体高的protected类型的成员变量h、获取和设置h值的public方法、
* 计算圆柱体体积的public方法
*/
public class Cylinder extends Circle{
protected double h=20;
public double getH() {
return h;
}
public void setH(double h) {
this.h = h;
}
public double volume(){
return h*super.area();
}
}
package com.practice.E;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/28 20:00
*
* 类Point,
* 包含有表示坐标位置的protected类型的成员变量x和y,
* 获取和设置x和y值的public方法
*/
public class Point {
protected int x=2;
protected int y=3;
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
}
package com.practice.E;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/28 20:03
*
* 建立Cylinder对象,输出其轴心位置坐标、半径、面积、高及其体积的值
*/
public class Test {
public static void main(String[] args) {
Cylinder cylinder = new Cylinder();
System.out.println("圆柱体积:"+cylinder.volume());
}
}
package com.practice.F;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/28 20:31
*
* BasedPlusSalesEmployee:
* SalesEmployee的子类,有固定底薪的销售人员,
* 工资由底薪加上销售提成部分。
* 属性:底薪。
*/
public class BasedPlusSalesEmployee extends SalesEmployee{
private double salary=10000;
public double getSalary(int month){
if(month==super.getBirthMonth()){
return super.getMonthlySales()*super.getCommissionRate()+salary+100;
}
return super.getMonthlySales()*super.getCommissionRate()+salary;
}
public BasedPlusSalesEmployee(){}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
}
package com.practice.F;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/28 20:12
*
* 是所有员工总的父类,
* 属性:员工的姓名,员工的生日月份。
*
* 方法:double getSalary(int month)
* 根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100元。
*/
public class Employee {
private String name;
private int birthMonth = 9;
public Employee() {
}
public double getSalary(int month) {
return 0;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getBirthMonth() {
return birthMonth;
}
public void setBirthMonth(int birthMonth) {
this.birthMonth = birthMonth;
}
}
package com.practice.F;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/28 20:21
*
* HourlyEmployee:
* Employee的子类,按小时拿工资的员工,
* 每月工作超出160小时的部分按照1.5倍工资发放。
* 属性:每小时的工资、每月工作的小时数。
*/
public class HourlyEmployee extends Employee{
private int Hours=150;
private double HoursSalary=100;
public HourlyEmployee(){}
public double getSalary(int month){
if(month==super.getBirthMonth()){
return Hours*HoursSalary+100;
}
return Hours*HoursSalary;
}
public int getHours() {
return Hours;
}
public void setHours(int hours) {
Hours = hours;
}
public double getHoursSalary() {
return HoursSalary;
}
public void setHoursSalary(double hoursSalary) {
HoursSalary = hoursSalary;
}
}
package com.practice.F;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/28 20:35
*
* 每个不同的员工类的重写父类的计算工资的方法 ,获取到正确的工资。
* Employee:这是所有员工总的父类,
* 属性:员工的姓名,员工的生日月份。
*
* 方法:double getSalary(int month) 根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100元。
*
*
* SalariedEmployee:Employee的子类,拿固定工资的员工。属性:月薪。
* HourlyEmployee:Employee的子类,按小时拿工资的员工,每月工作超出160小时的部分按照1.5倍工资发放。属性:每小时的工资、每月工作的小时数。
*
* SalesEmployee:Employee的子类,销售人员,工资由月销售额和提成率决定。属性:月销售额、提成率。
*
*
* BasedPlusSalesEmployee:SalesEmployee的子类,有固定底薪的销售人员,
*/
public class Pay {
public static void main(String[] args) {
SalariedEmployee sa = new SalariedEmployee();
System.out.println("SalariedEmployee 工资为 " + sa.getSalary(6));
HourlyEmployee ho = new HourlyEmployee();
System.out.println("HourlyEmployee 工资为 " + ho.getSalary(9));
SalesEmployee sal = new SalesEmployee();
System.out.println("SalesEmployee 工资为 "+sal.getSalary(10));
BasedPlusSalesEmployee ba = new BasedPlusSalesEmployee();
System.out.println("BasedPlusSalesEmployee 工资为 "+ba.getSalary(11));
}
}
package com.practice.F;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/28 20:16
*
* SalariedEmployee:
* Employee的子类,拿固定工资的员工。属性:月薪。
*/
public class SalariedEmployee extends Employee{
private double salary=10000;
public SalariedEmployee(){}
public double getSalary(int month){
if(month==super.getBirthMonth()){
return salary+100;
}
return salary;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
}
package com.practice.F;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/28 20:28
*
* SalesEmployee:
* Employee的子类,销售人员,工资由月销售额和提成率决定。
* 属性:月销售额、提成率。
*/
public class SalesEmployee extends Employee{
private double MonthlySales = 1000000;
private double CommissionRate = 0.01;
public SalesEmployee(){}
public double getSalary(int month){
if(month==super.getBirthMonth()){
return MonthlySales*CommissionRate+100;
}
return MonthlySales*CommissionRate;
}
public double getMonthlySales() {
return MonthlySales;
}
public void setMonthlySales(double monthlySales) {
MonthlySales = monthlySales;
}
public double getCommissionRate() {
return CommissionRate;
}
public void setCommissionRate(double commissionRate) {
CommissionRate = commissionRate;
}
}
package com.practice.G;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/28 20:58
*/
public class GreenLamp extends Lamp{
public void light(){
System.out.println("绿光");
}
}
package com.practice.G;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/28 20:52
*
* 定义一个台灯类Lamp,有一个灯泡属性,还有一个开灯的方法。
* 灯泡分为红灯泡和绿灯泡,都有发光的方法。
* 要求:在不修改台灯代码的前提下,更换灯泡发出不同的光。
*/
public class Lamp {
private String lamp;
public Lamp(){}
public void light(){
System.out.println("光");
}
}
package com.practice.G;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/28 21:00
*/
public class Light {
public void light(Lamp l){
l.light();
}
public static void main(String[] args) {
RedLamp r = new RedLamp();
GreenLamp g = new GreenLamp();
Light l = new Light();
l.light(r);
l.light(g);
}
}
package com.practice.G;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/28 20:58
*/
public class RedLamp extends Lamp{
public void light(){
System.out.println("红光");
}
}