1.编写一个抽象类Shape,声明计算图形面积的抽象方法。再分别定义Shape的子类Circle(圆)和Rectangle(矩形),在两个子类中按照不同图形的面积计算公式,实现Shape类中计算面积的方法。
public abstract class Sharp {
public abstract double area();
public Sharp() {
}
}
class Circle extends Sharp {
private double r;
public Circle() {
super();
}
public double getR() {
return r;
}
public void setR(double r) {
this.r = r;
}
@Override
public double area() {
// TODO Auto-generated method stub
return Math.PI * r * r;
}
}
class Rectangle extends Sharp {
private double a, b;
public Rectangle() {
super();
}
public double getA() {
return a;
}
public void setA(double a) {
this.a = a;
}
public double getB() {
return b;
}
public void setB(double b) {
this.b = b;
}
@Override
public double area() {
// TODO Auto-generated method stub
return a * b;
}
}
public class Test {
public static void main(String[] args) {
Circle c = new Circle();
c.setR(2);
System.out.println(c.area());
Rectangle re = new Rectangle();
re.setA(4);
re.setB(5);
System.out.println(re.area());
}
}
2.创建一个接口IShape,接口中有一个求取面积的抽象方法“public double area()”。定义一个正方形类Square,该类实现了IShape接口。Square类中有一个属性a表示正方形的边长,在构造方法中初始化该边长。定义一个主类,在主类中,创建Square类的实例对象,求该正方形对象的面积。
public interface ISharp {
double area();
}
public class Square implements ISharp {
private double a;
public Square() {
super();
}
public Square(double a) {
super();
this.a = a;
}
public double getA() {
return a;
}
public void setA(double a) {
this.a = a;
}
@Override
public double area() {
// TODO Auto-generated method stub
return a * a;
}
}
public class Test {
public static void main(String[] args) {
Square s = new Square();
s.setA(4);
System.out.println(s.area());
}
}
3.创建一个工人类Worker
(1)工人类的属性:工龄、工号、姓名、基本工资 Phone phone String str
需要定义一个Phone类,属性:brand price
(2)输出所有信息的方法(包含手机的信息)
(3)定义一个输出工资的方法(工资=基本工资)
(4)创建一个部门经理类,继承工人Worker类,并重写其计算工资的方法
(工资=基本工资+岗位级别 * 500+工龄*1000)
添加属性Saler saler; 定义一个方法manager(){打印部门经理谁负责管理的是哪个销售人员,当月的销售金额是XX} 表示管理哪个销售人员
(5)创建一个销售人员类,继承工人Worker类,
并增加一个属性(销售金额)。
并重写其计算工资的方法
(工资=基本工资+销售金额 * 系数(*其中系数当销售金额大于100W时为0.09,小于100W时为0.08))
(6)创建测试类,分别定义Manager类的对象,并赋值,调用其输出工资的方法和manager方法进行测试。

public class Worker {
private int year;
private int num;
private String name;
private double money;
private Phone phone;
public Worker() {
super();
}
public Worker(int year, int num, String name, double money, Phone phone) {
super();
this.year = year;
this.num = num;
this.name = name;
this.money = money;
this.phone = phone;
}
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getMoney() {
return money;
}
public void setMoney(double money) {
this.money = money;
}
public Phone getPhone() {
return phone;
}
public void setPhone(Phone phone) {
this.phone = phone;
}
public void printinfo() {
System.out.println("工龄" + year + "年,工号" + num + ",姓名:" + name + ",基本工资" + money + "元,手機:" + phone.getBrand()
+ "," + phone.getPrice() + "元");
}
}
public class Phone {
private String brand;
private int price;
public Phone() {
super();
}
public Phone(String brand, int price) {
super();
this.brand = brand;
this.price = price;
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
}
public class Manager extends Worker {
private Saler saler;
public Manager() {
super();
}
public Manager(int year, int num, String name, double money, Phone phone, Saler saler) {
super(year, num, name, money, phone);
this.saler = saler;
}
public Saler getSaler() {
return saler;
}
public void setSaler(Saler saler) {
this.saler = saler;
}
public double money() {
System.out.println(getMoney() + 500 + getYear() * 1000);
return getMoney() + 500 + getYear() * 1000;
}
// 打印部门经理谁负责管理的是哪个销售人员,当月的销售金额是XX,表示管理哪个销售人员
public void manage() {
System.out.println(
"部門經理:" + super.getName() + "負責銷售人員:" + saler.getName() + ",當月銷售金額是:" + saler.getSMoney() + "元");
}
}
public class Saler extends Worker {
private int SMoney;
public Saler() {
super();
}
public Saler(int year, int num, String name, double money, Phone phone, int sMoney) {
super(year, num, name, money, phone);
SMoney = sMoney;
}
public int getSMoney() {
return SMoney;
}
public void setSMoney(int sMoney) {
SMoney = sMoney;
}
// 工资=基本工资+销售金额*系数(其中系数当销售金额大于100W时为0.09,小于100W时为0.08)
public double money() {
if (SMoney >= 1000000) {
System.out.println(getMoney() + SMoney * 0.09);
return getSMoney() + SMoney * 0.09;
} else
System.out.println(getMoney() + SMoney * 0.08);
return getSMoney() + SMoney * 0.08;
}
}
public class Test {
public static void main(String[] args) {
Phone p1 = new Phone("IPhone", 8000);
Phone p2 = new Phone("諾基亞", 2000);
Worker s = new Saler(5, 201, "張三", 5000, p2, 1000000);
Saler s1 = (Saler) s;
Worker m = new Manager(10, 101, "李四", 8000, p1, s1);
Manager m1 = (Manager) m;
m.printinfo();
s.printinfo();
m1.manage();
}
}
本文通过三个示例详细介绍了Java中的抽象类和接口的使用。首先,创建了一个抽象类Shape及其子类Circle和Rectangle,实现了计算图形面积的方法。接着,定义了一个IShape接口,由正方形类Square实现,展示接口的实现方式。最后,设计了工人、部门经理和销售人员类,探讨了类的继承、方法重写以及属性组合的应用。
583





