目录

1.设计一个抽象类图形类 

2.定义一个抽象接口,该接口用于求和与统计数量 

3.定义一个抽象类动物类,同时定义其行为的抽象接口

4.编写一个类,实现银行账户


1.设计一个抽象类图形类 

设计一个抽象类图形类,在该类中包含有至少三个抽象方法,分别用于求周长、求面积,以及对图形进行描述(如,“这是**形状,周长是**,面积是**”),分别定义圆形类、长方形类、等边三角形类来继承图形类,实现上述三个方法,并创建实例验证

用抽象矩形派生出长方形的java代码 java设计一个图形抽象类_java

抽象类

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();
    }
}

 

用抽象矩形派生出长方形的java代码 java设计一个图形抽象类_开发语言_02

长方形类 

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();
    }
}

用抽象矩形派生出长方形的java代码 java设计一个图形抽象类_用抽象矩形派生出长方形的java代码_03

等边三角形类 

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();
    }
}

用抽象矩形派生出长方形的java代码 java设计一个图形抽象类_ide_04

2.定义一个抽象接口,该接口用于求和与统计数量 

定义一个抽象接口,该接口用于求和与统计数量。定义两个奇数类与偶数类实现上述接口,分别可以求100以内的奇数的和,统计100以内的奇数个数,以及求100以内的偶数的和,统计100以内的偶数个数。

用抽象矩形派生出长方形的java代码 java设计一个图形抽象类_jvm_05

抽象接口

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();
    }
}

用抽象矩形派生出长方形的java代码 java设计一个图形抽象类_java_06

3.定义一个抽象类动物类,同时定义其行为的抽象接口

定义一个抽象类动物类,同时定义抽象接口:进食接口、睡觉接口、思考接口、说话接口、行走接口、游泳接口、飞翔的接口。分别定义猫类、人类、鸟类、鱼类继承动物类,同时,根据实际情况,选择性实现上述接口,并创建实例验证

文件布局 

用抽象矩形派生出长方形的java代码 java设计一个图形抽象类_用抽象矩形派生出长方形的java代码_07

抽象动物类

为其设置姓名和年龄两个共有属性

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();
    }
}

用抽象矩形派生出长方形的java代码 java设计一个图形抽象类_ide_08

· 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();
    }

}

用抽象矩形派生出长方形的java代码 java设计一个图形抽象类_开发语言_09

· 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();
    }
}

用抽象矩形派生出长方形的java代码 java设计一个图形抽象类_用抽象矩形派生出长方形的java代码_10

· 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();
    }
}

 

用抽象矩形派生出长方形的java代码 java设计一个图形抽象类_java_11

4.编写一个类,实现银行账户

编写一个类,实现银行账户,并完成程序的测试:

· 设置的属性有“账号”、 “储户姓名”、“地址”以及“存款余额”;

· 设置的方法有“存款”、“取款”、“查询”、“计算利息”、“累加利息”;

· 给类增加一个静态属性“最小余额”和一个用来修改这个最小余额属性的方法;

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

①设置的属性有“账号”、 “储户姓名”、“地址”以及“存款余额”

根据实验要求,定义出三个变量账号、姓名、地址、存款余额,定义为public共有属性,账号也定义为String类型变量.

用抽象矩形派生出长方形的java代码 java设计一个图形抽象类_java_12

②定义活期利率

public static final double RATE = 0.0035;//定义活期利率

③ 设置的方法有“存款”、“取款”、“查询”、“计算利息”、“累加利息”

用抽象矩形派生出长方形的java代码 java设计一个图形抽象类_java_13

  

首先定义出四个方法,①存款的实现即传入要存的金额,直接用当前余额加上存入余额即可; ②取款的实现即传入要取的金额,用当前余额减去取款金额即可;③计算利息为活期利率,根据存入的时间来计算利率;④累加利息,假如当前存入了一年,一年结束后又存了一年,则根据第一年结束后的余额来计算第二年的利息,再累加两年的利息.

④给类增加一个静态属性“最小余额”和一个用来修改这个最小余额属性的方法

增加了最小余额后,在取出金额的时候利用最小余额对其进行约束:如果取出后余额小于最小余额则不允许取出 

用抽象矩形派生出长方形的java代码 java设计一个图形抽象类_java_14

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

用抽象矩形派生出长方形的java代码 java设计一个图形抽象类_java_15

完整代码 

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");
    }
}

 

用抽象矩形派生出长方形的java代码 java设计一个图形抽象类_java_16