6-1 | 设计一个矩形类Rectangle |
class Rectangle{
double width=1;
double height= 1;
public Rectangle(){}
public Rectangle(double width, double height){
this.width=width;
this.height=height;}
public double getArea(){
return width*height;}
public double getPerimeter(){
return 2*(width+height);}
}
6-2 Book类的设计
class Book {
private String title; // 书籍名称
private int price; // 价格
private String author; // 作者
private int year; // 出版年份
// 构造方法
public Book(String title, int price, String author, int year) {
this.title = title;
this.price = price;
this.author = author;
this.year = year;
}
// Getter 和 Setter 方法
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
}
6-3:根据派生类写出基类(Java)
public People() {
// 默认值
}
// 带参数的构造方法
public People(String id, String name) {
this.id = id;
this.name = name;
}
// 设置id
public void setId(String id) {
this.id = id;
}
// 设置name
public void setName(String name) {
this.name = name;
}
// 获取id
public String getId() {
return id;
}
// 获取name
public String getName() {
return name;
}
// say方法
public void say() {
System.out.println("I'm a person! My name is " + this.name + ".");
}
6-4 从抽象类shape类扩展出一个圆形类Circle
class Circle extends shape{
private double radius;
public Circle(double r){
radius=r;
}
public double getArea(){
return Math.PI*radius*radius;
}
public double getPerimeter(){
return 2*Math.PI*radius;
}
}
6-5 图书和音像租赁
abstract class Media{
public static int day;
public abstract double getDailyRent();
}
class Book extends Media{
private String name;
private double price;
public Book(String name,double price){
this.name=name;
this.price=price;
}
public double getDailyRent(){
return price*day*0.01;
}
}
class DVD extends Media{
private String name;
public DVD(String name){
this.name=name;
}
public double getDailyRent(){
return day;
}
}
class MediaShop{
public static double total;
public static double calculateRent(Media[] ms,int a){
Media.day=a;
for(Media c:ms){
total+=c.getDailyRent();
}
return total;
}
}
6-6 设计一个Triangle类继承自GeometricObject类
class Triangle extends GeometricObject {
private double side1 = 1.0;
private double side2 = 1.0;
private double side3 = 1.0;
// 无参构造方法
public Triangle() {
}
// 带参数的构造方法
public Triangle(double side1, double side2, double side3) {
this.side1 = side1;
this.side2 = side2;
this.side3 = side3;
}
// 访问器方法
public double getSide1() {
return side1;
}
public double getSide2() {
return side2;
}
public double getSide3() {
return side3;
}
// 计算三角形的面积
public double getArea() {
double s = getPerimeter() / 2; // 半周长
return Math.sqrt(s * (s - side1) * (s - side2) * (s - side3)); // 海伦公式
}
// 计算三角形的周长
public double getPerimeter() {
return side1 + side2 + side3;
}
// 返回三角形的字符串描述
@Override
public String toString() {
return "Triangle: side1=" + side1 + " side2=" + side2 + " side3=" + side3;
}
}
6-7 职工工资-继承-bk
class HourlyWorker extends Worker {
public HourlyWorker(String name, double rate) {
super(name, rate);
}
@Override
public double pay(int hour) {
if (hour <= 40) {
return hour * getRate(); // 正常工时
} else {
double regularPay = 40 * getRate(); // 前40小时
double overtimePay = (hour - 40) * getRate() * 2; // 加班费(双倍)
return regularPay + overtimePay; // 总工资
}
}
}
class SalariedWorker extends Worker{
public SalariedWorker(String name,double rate){
super(name,rate);
}
public double pay() {
return 40 * getRate();
}
public double pay(int hour) {
return pay(); // 始终返回40小时的工资
}
}
6-8 快递计价器
abstract class Express{
public int weight;
public int getWeight(){return weight;}
public Express(int a){
weight=a;}
public abstract int getTotal();
}
class SLExpress extends Express{
public SLExpress(int a){
super(a);
}
public int getTotal(){
return 12+(weight-1)*2;
}
}
class DDExpress extends Express{
public DDExpress(int a){
super(a);
}
public int getTotal(){
return 5+(weight-1);
}
}
class CaicaiStation{
static int count;
public static int calculate(Express[] ex){
for(Express c:ex){
count+=c.getTotal();
}
return count;
}
}