目录
1.设计一个抽象类图形类
2.定义一个抽象接口,该接口用于求和与统计数量
3.定义一个抽象类动物类,同时定义其行为的抽象接口
4.编写一个类,实现银行账户
1.设计一个抽象类图形类
设计一个抽象类图形类,在该类中包含有至少三个抽象方法,分别用于求周长、求面积,以及对图形进行描述(如,“这是**形状,周长是**,面积是**”),分别定义圆形类、长方形类、等边三角形类来继承图形类,实现上述三个方法,并创建实例验证。

抽象类
package task.task;
public abstract class Graphical {
public abstract void area();//面积
public abstract void perimeter();//周长
public abstract void describe();//对图形的描述
}圆形类
package task.task;
/**
* 圆形
*/
public class Circular extends Graphical {
public static final double Π = 3.14;
public int r;//半径
public String name;//形状
public double area;//面积
public double perimeter;//周长
public Circular(int r, String name) {
this.r = r;
= name;
}
@Override
public void area() {
this.area = Π*r*r;
System.out.println("半径为" + r + "的圆的面积为" + area);
}
@Override
public void perimeter() {
this.perimeter = Π*(2 * r);
System.out.println("半径为" + r + "的圆的周长为" + perimeter);
}
@Override
public void describe() {
System.out.println("这是" + name + "形状,"+ "周长是" + area + ",面积是" + perimeter);
}
/**
* 测试方法
*/
public static void main(String[] args) {
Circular c = new Circular(4,"圆形");
c.area();
c.perimeter();
c.describe();
}
}

长方形类
package tsak1;
/**
* 长方形类
*/
public class Rectangle extends Graphical {
public String name = "长方形";
public int length;//长
public int wide;//宽
public int area;//面积
public int perimeter;//周长
public Rectangle(int length, int wide) {
this.length = length;
this.wide = wide;
}
@Override
public void area() {
this.area = length * wide;
System.out.println("长为" + length + "宽为" + wide + "的长方形的面积为" + area);
}
@Override
public void perimeter() {
this.perimeter = (length + wide) * 2;
System.out.println("长为" + length + "宽为" + wide + "的长方形的周长为" + perimeter);
}
@Override
public void describe() {
System.out.println("这是" + name + "形状,"+ "周长是" + perimeter + ",面积是" + area);
}
public static void main(String[] args) {
Rectangle r = new Rectangle(5,2);
r.area();
r.perimeter();
r.describe();
}
}
等边三角形类
package tsak1;
/**
* 等边三角形类
*/
public class Triangle extends Graphical {
public static final double SIN60 = 0.87;//取sin60°的近似值
public String name = "等边三角形";
public int sideLength;//边长
public int perimeter;//周长
public double area;//面积
public Triangle(int sideLength) {
this.sideLength = sideLength;
}
@Override
public void area() {
area = 0.5 * sideLength * sideLength * SIN60;
System.out.println("边长为" + sideLength + "的等边三角形形的面积为" + area);
}
@Override
public void perimeter() {
perimeter = 3 * sideLength;
System.out.println("边长为" + sideLength + "的等边三角形形的周长为" + perimeter);
}
@Override
public void describe() {
System.out.println("这是" + name + "形状,"+ "周长是" + perimeter + ",面积是" + area);
}
public static void main(String[] args) {
Triangle t = new Triangle(2);
t.area();
t.perimeter();
t.describe();
}
}
2.定义一个抽象接口,该接口用于求和与统计数量
定义一个抽象接口,该接口用于求和与统计数量。定义两个奇数类与偶数类实现上述接口,分别可以求100以内的奇数的和,统计100以内的奇数个数,以及求100以内的偶数的和,统计100以内的偶数个数。

抽象接口
package task2;
/**
* 接口类
*/
public interface SumCount {
public static final int RANGE = 100;//直接在接口中初始化要求的范围
public abstract void sumAndCount();
}偶数类
package task2;
/**
* 偶数类
*/
public class EvenNum implements SumCount {
private int evenCount;//偶数个数
private int evenSum;//偶数和
@Override
public void sumAndCount() {
for (int i = 1; i <= RANGE; i++) {
if(i % 2 == 0) {
evenCount++;
evenSum += i;
}
}
System.out.println("100以内的偶数的和为" + evenSum + ",100以内的偶数个数为" + evenCount);
}
}奇数类
package task2;
/**
* 奇数类
*/
public class OddNum implements SumCount {
private int oddCount = 0;//奇数个数
private int oddSum = 0;//奇数和
@Override
public void sumAndCount() {
for (int i = 1; i <= RANGE; i++) {
if(i % 2 != 0) {
oddCount++;
oddSum += i;
}
}
System.out.println("100以内的奇数的和为" + oddSum + ",100以内的奇数个数为" + oddCount);
}
}测试类
package task2;
public class Test {
public static void main(String[] args) {
//初始化偶数类,调用偶数类求和求个数
EvenNum e = new EvenNum();
e.sumAndCount();
//初始化奇数类,调用奇数类求和求个数
OddNum o = new OddNum();
o.sumAndCount();
}
}
3.定义一个抽象类动物类,同时定义其行为的抽象接口
定义一个抽象类动物类,同时定义抽象接口:进食接口、睡觉接口、思考接口、说话接口、行走接口、游泳接口、飞翔的接口。分别定义猫类、人类、鸟类、鱼类继承动物类,同时,根据实际情况,选择性实现上述接口,并创建实例验证
文件布局

抽象动物类
为其设置姓名和年龄两个共有属性
package task1.abstractcalss;
public abstract class Animal {
public String name;
public int age;
}接口
· 进食接口
package task1.myinterface;
/**
* 进食接口
*/
public interface IEating {
void eat();
}· 飞行接口
package task1.myinterface;
/**
* 飞行接口
*/
public interface IFlying {
void fly();
}· 睡觉接口
package task1.myinterface;
/**
* 睡觉接口
*/
public interface ISleeping {
void sleep();
}· 讲话接口
package task1.myinterface;
/**
* 讲话接口
*/
public interface ISpeaking {
void speak();
}· 游泳接口
package task1.myinterface;
/**
* 游泳接口
*/
public interface ISwimming {
void swim();
}· 思考接口
package task1.myinterface;
/**
* 思考接口
*/
public interface IThinking {
void think();
}· 行走接口
package task1.myinterface;
/**
* 行走接口
*/
public interface IWalking {
void walk();
}实现类
· Bird类
package task1.inheritance;
import task1.abstractcalss.Animal;
import task1.myinterface.*;
public class Bird extends Animal implements IEating, IFlying, ISleeping, ISpeaking {
public Bird(String name, int age) {
super.age = age;
= name;
}
@Override
public void printfInfo() {
System.out.println("这是" + + ",年龄为" + super.age + "岁");
}
@Override
public void eat() {
System.out.println( + "正在吃饭");
}
@Override
public void fly() {
System.out.println( + "正在飞行");
}
@Override
public void sleep() {
System.out.println( + "正在睡觉");
}
@Override
public void speak() {
System.out.println( + "吱吱吱");
}
public static void main(String[] args) {
Bird bird = new Bird("布谷鸟", 4);
bird.printfInfo();
bird.eat();
bird.fly();
bird.sleep();
bird.speak();
}
}
· Cat类
package task1.inheritance;
import task1.abstractcalss.Animal;
import task1.myinterface.*;
public class Cat extends Animal implements IEating, ISleeping, ISpeaking, IWalking {
public Cat(String name, int age) {
super.age = age;
= name;
}
@Override
public void printfInfo() {
System.out.println("这是" + + ",年龄为" + super.age + "岁");
}
@Override
public void eat() {
System.out.println( + "正在吃饭");
}
@Override
public void sleep() {
System.out.println( + "正在睡觉");
}
@Override
public void speak() {
System.out.println( + "喵喵喵");
}
@Override
public void walk() {
System.out.println( + "在跑步");
}
public static void main(String[] args) {
Cat cat = new Cat("波斯猫", 3);
cat.printfInfo();
cat.eat();
cat.sleep();
cat.walk();
cat.speak();
}
}
· Fish类
package task1.inheritance;
import task1.abstractcalss.Animal;
import task1.myinterface.*;
public class Fish extends Animal implements IEating, ISleeping, ISwimming {
public Fish(String name, int age) {
super.age = age;
= name;
}
@Override
public void printfInfo() {
System.out.println("这是" + + ",年龄为" + super.age + "岁");
}
@Override
public void eat() {
System.out.println( + "正在吃饭");
}
@Override
public void sleep() {
System.out.println( + "正在睡觉");
}
@Override
public void swim() {
System.out.println( + "正在游泳");
}
public static void main(String[] args) {
Bird bird = new Bird("鲤鱼", 4);
bird.printfInfo();
bird.speak();
bird.sleep();
bird.eat();
}
}
· Person类
package task1.inheritance;
import task1.abstractcalss.Animal;
import task1.myinterface.*;
public class Person extends Animal implements IEating, ISpeaking, ISleeping, IThinking, IWalking,ISwimming {
public Person(String name, int age) {
= name;
super.age = age;
}
@Override
public void printfInfo() {
System.out.println("这是" + + ",年龄为" + super.age + "岁");
}
@Override
public void eat() {
System.out.println( + "正在吃饭");
}
@Override
public void sleep() {
System.out.println( + "正在睡觉");
}
@Override
public void speak() {
System.out.println( + "说我爱学Java");
}
@Override
public void swim() {
System.out.println( + "在游泳");
}
@Override
public void think() {
System.out.println( + "在思考");
}
@Override
public void walk() {
System.out.println( + "在跑步");
}
public static void main(String[] args) {
Person person = new Person("张三", 18);
person.printfInfo();
person.eat();
person.sleep();
person.speak();
person.swim();
person.think();
person.walk();
}
}

4.编写一个类,实现银行账户
编写一个类,实现银行账户,并完成程序的测试:
· 设置的属性有“账号”、 “储户姓名”、“地址”以及“存款余额”;
· 设置的方法有“存款”、“取款”、“查询”、“计算利息”、“累加利息”;
· 给类增加一个静态属性“最小余额”和一个用来修改这个最小余额属性的方法;
· 给类增加一个静态属性“活期利息”和封装这个数据的对应方法;
①设置的属性有“账号”、 “储户姓名”、“地址”以及“存款余额”
根据实验要求,定义出三个变量账号、姓名、地址、存款余额,定义为public共有属性,账号也定义为String类型变量.

②定义活期利率
public static final double RATE = 0.0035;//定义活期利率③ 设置的方法有“存款”、“取款”、“查询”、“计算利息”、“累加利息”

首先定义出四个方法,①存款的实现即传入要存的金额,直接用当前余额加上存入余额即可; ②取款的实现即传入要取的金额,用当前余额减去取款金额即可;③计算利息为活期利率,根据存入的时间来计算利率;④累加利息,假如当前存入了一年,一年结束后又存了一年,则根据第一年结束后的余额来计算第二年的利息,再累加两年的利息.
④给类增加一个静态属性“最小余额”和一个用来修改这个最小余额属性的方法
增加了最小余额后,在取出金额的时候利用最小余额对其进行约束:如果取出后余额小于最小余额则不允许取出

⑤给类增加一个静态属性“活期利息”和封装这个数据的对应方法

完整代码
package task2;
public class Account {
public static final double RATE = 0.0035;//定义活期利率
public String username;//账号
public String name;//储户姓名
public String address;//地址
public double money;//存款
public double interest;//利息
public double allInterest;//累加利息
public Account(String username, String name, String address, double money) {
this.username = username;
= name;
this.address = address;
this.money = money;
}
private static double minimumBalance = 2000;//最小余额
private static double currentInterest;//活期利息
//获得封装的最小余额数据
public double getMinimumBalance() {
return minimumBalance;
}
//修改封装的最小余额数据
public void setMinimumBalance(double minimumBalance) {
Account.minimumBalance = minimumBalance;
}
//获得封装的活期利息
public double getCurrentInterest() {
return currentInterest;
}
//修改封装的活期利息
public void setCurrentInterest(double currentInterest) {
Account.currentInterest = currentInterest;
}
//存款
public void deposit(double money) {
this.money += money;
System.out.println("成功存入" + money + "rmb,当前余额为: " + this.money + "rmb");
}
//取款
public void withdraw(double money) {
if((this.money-money) < minimumBalance) {
System.out.println("取出后余额小于最小余额" + minimumBalance + "rmb,取款失败");
}else {
this.money -= money;
System.out.println("成功取出" + money + "rmb,当前余额为: " + this.money + "rmb");
}
}
//计算利息
public void calculateInterest(int year) {
this.interest = money * year * RATE;
//计算完利息后加入余额
this.money += interest;
System.out.println("当前余额为: " + this.money + "rmb,存入" + year + "年可以获得利息: " + this.interest + "rmb");
}
//累加利息
public void accumulatedInterest() {
this.allInterest += interest;
System.out.println("目前累加利息为: " + this.allInterest + "rmb");
}
}测试代码
package task2;
public class TestAccount {
public static void main(String[] args) {
Account account = new Account("62456", "张三", "陕西西安", 4000);//需要保证初始余额大于最小余额
//模拟存款
account.deposit(100000);
//模拟取款
account.withdraw(4000);
//计算利息(存入五年)
account.calculateInterest(5);
account.accumulatedInterest();
//再次计算利息,存入三年
account.calculateInterest(3);
account.accumulatedInterest();
//测试活期利息
//获得当前活期利息
System.out.println("当前活期利息为: " + account.getCurrentInterest() + "rmb");
//修改当前活期利息
account.setCurrentInterest(6000);
//显示当前活期利息
System.out.println("当前活期利息为: " + account.getCurrentInterest() + "rmb");
}
}

















