我正在尝试使用继承,以便我可以正确执行测试类中包含的代码.我不确定如何使用goPee()方法实现一个名为Bathroom的抽象类或接口.你知道如何编码吗? 如果我添加一个抽象类或一个接口
如果我添加一个抽象类或一个接口,并分别通过extends或implements将它们添加到Human类,我总是被要求在gopee()方法的Human类中编写实现,我不想这样做,如我的goPee()方法实现是在男性和女性子类中编写的.
import java.util.ArrayList; class Human { private String name; public Human (String name) { this.name = name; } public String getName() { return name; } public void eat() { System.out.println(name + " went to fridge."); } } class Male extends Human { public Male(String name) { super(name); } public void goPee() { System.out.println(getName() + " stood up."); } } class Female extends Human { public Female(String name) { super(name); } public void goPee() { System.out.println(getName() + " sat down."); } } public class TestHuman { public static void main(String[] args) { ArrayList<Human> arr = new ArrayList<Human>(); arr.add(new Male("john")); arr.add(new Female("sally")); for (int count = 0; count < arr.size(); count++) { arr.get(count).eat(); arr.get(count).goPee(); } } }您必须在Human类中定义goPee()方法.由于您在两个子类中都覆盖了它,因此它可以是一个抽象方法.这也意味着人类必须是抽象的.
abstract class Human { private String name; public Human (String name) { this.name = name; } public String getName() { return name; } public void eat() { System.out.println(name + " went to fridge."); } public abstract void goPee(); }
在Human中声明一个抽象方法可确保Human的所有子类使用相同的参数和返回类型实现goPee()方法.这允许你在人类身上调用goPee()而不知道它是男性还是女性,因为你知道它们都实现了它.