这下真学不懂了,Java没学到这里弄不懂了

XDM们,求一页Java代码,要求如下

ABA 是一家位于北京的猫咖啡馆。 咖啡厅内饲养着各种品种和年龄的猫,顾客来咖啡厅与猫玩耍。 咖啡厅向这些顾客出售饮料,并根据顾客在咖啡厅度过的时间向他们收费。 客户可以注册成为会员并预付一定数量的访问费用。 编写一个 Java 程序,咖啡馆员工可以使用它来帮助他们跟踪业务功能。
指示:
按照本文中描述的相同类结构编写 Java 程序。 如果在此赋值中指定了类、变量或方法的名称,则您自己的程序必须完全匹配。

创建一个名为 Cat 的类。 Cat 类应具有以下公共接口:
public Cat(String name, String breed, int age):设置猫的名字、品种和年龄的构造函数。
public String getName():返回猫名的访问器。
public String getBreed():返回猫品种的访问器。
public int getAge():返回猫年龄的访问器。

创建一个名为 Membership(会员名单) 的类。 Membership 类应具有以下公共接口:
public Membership(String name, int visits):一个构造函数,用于设置成员的名称和允许的初始访问次数。 参数 visits 应该是正数(如果不是,则将访问次数初始化为 0)。
public String getName():返回成员名称的访问器。
public int getRemainingVisits():返回剩余访问次数的访问器。
public boolean isValid():一种确定一个人的成员资格是否仍然有效的方法。 如果剩余访问次数大于 0,该方法将返回 true; 否则为假。
public boolean topUp(int additionalVisits):将额外访问(由additionalVisits 表示)添加到remainingVisits 的方法。 如果充值成功则返回 true,否则返回 false。 仅当给定的 additionalVisits 为非负数时,充值才会成功。
public boolean charge():会员有效时剩余访问次数减1的方法。 如果收费成功则返回 true,否则返回 false。 只有会员在收费前有效,才能收费成功。

Cat类

public class Cat {
    //Cat 类应具有以下公共接口:
    //public Cat(String name, String breed, int age):设置猫的名字、品种和年龄的构造函数。
    //public String getName():返回猫名的访问器。
    //public String getBreed():返回猫品种的访问器。
    //public int getAge():返回猫年龄的访问器。

    private String name;
    private String breed;
    private int age;

    public Cat(String name, String breed, int age) {
        this.name = name;
        this.breed = breed;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public String getBreed() {
        return breed;
    }

    public int getAge() {
        return age;
    }

    public static void main(String[] args) {
        Cat cat = new Cat("小花", "波斯猫", 2);
        System.out.println("猫的名字:" + cat.getName());
        System.out.println("猫的品种:" + cat.getBreed());
        System.out.println("猫的年龄:" + cat.getAge());
    }



}


Membership类:

public class Membership {
    //Membership 类应具有以下公共接口:
    //public Membership(String name, int visits):一个构造函数,用于设置成员的名称和允许的初始访问次数。 参数 visits 应该是正数(如果不是,则将访问次数初始化为 0)。
    //public String getName():返回成员名称的访问器。
    //public int getRemainingVisits():返回剩余访问次数的访问器。
    //public boolean isValid():一种确定一个人的成员资格是否仍然有效的方法。 如果剩余访问次数大于 0,该方法将返回 true; 否则为假。
    //public boolean topUp(int additionalVisits):将额外访问(由additionalVisits 表示)添加到remainingVisits 的方法。 如果充值成功则返回 true,否则返回 false。 仅当给定的 additionalVisits 为非负数时,充值才会成功。
    //public boolean charge():会员有效时剩余访问次数减1的方法。 如果收费成功则返回 true,否则返回 false。 只有会员在收费前有效,才能收费成功。

    private String name;
    private int visits;

    public Membership(String name, int visits) {
        this.name = name;
        if (visits > 0) {
            this.visits = visits;
        } else {
            this.visits = 0;
        }
    }

    public String getName() {
        return name;
    }

    public int getRemainingVisits() {
        return visits;
    }

    public boolean isValid() {
        if (visits > 0) {
            return true;
        } else {
            return false;
        }
    }

    public boolean topUp(int additionalVisits) {
        if (additionalVisits >= 0) {
            visits += additionalVisits;
            return true;
        } else {
            return false;
        }
    }

    public boolean charge() {
        if (isValid()) {
            visits -= 1;
            return true;
        } else {
            return false;
        }
    }

    public static void main(String[] args) {
        Membership membership = new Membership("小明", 10);
        System.out.println("会员的名字:" + membership.getName());
        System.out.println("会员的剩余访问次数:" + membership.getRemainingVisits());
        System.out.println("会员的资格是否有效:" + membership.isValid());
        System.out.println("会员充值成功:" + membership.topUp(5));
        System.out.println("会员的剩余访问次数:" + membership.getRemainingVisits());
        System.out.println("会员收费成功:" + membership.charge());
        System.out.println("会员的剩余访问次数:" + membership.getRemainingVisits());
    }





}