为了账号安全,请及时绑定邮箱和手机立即绑定

如何限制直接调用超类型类的方法,并且只能通过子类型类methode使用java中的子类?

如何限制直接调用超类型类的方法,并且只能通过子类型类methode使用java中的子类?

慕娘9325324 2021-12-01 17:01:44
我正在编写一个扩展 ArrayList 类的算法。这里,使用算法类的实例,可以调用 ArrayList 的所有方法。我如何限制只能调用算法类中定义的方法,而算法类只能通过以下方式访问所有 ArrayList 的方法自己的方法???谢谢
查看完整描述

2 回答

?
青春有我

TA贡献1784条经验 获得超8个赞

不要扩展ArrayList. 而是将其实例化为私有成员字段。这样您就可以完全控制列表。例如


public class YourList<T> {

    private ArrayList<T> list;


    public YourList() {

        list = new ArrayList<>();

    }

    // example method

    public void add(T t) {

        list.add(t);

    }


}

我添加了一个类型参数,T因为您不想使用原始类型。你会像这样使用它


YourList<String> list = new YourList<>();

list.add("String");

YourList<Integer> otherList = new YourList<>();

list.add(1);


查看完整回答
反对 回复 2021-12-01
?
慕神8447489

TA贡献1780条经验 获得超1个赞

您不必“强迫”您的用户调用您的子类。

按照设计,Java 将仅运行在子类中重写的方法,给定ArrayList. 超类ArrayList将提供 API(您不能阻止其他类访问超类中声明的公共方法),但所有重写的方法都将按照您的子类中的定义运行。

然后,您的子类可以选择在适当的时候ArrayList通过使用super关键字来运行方法实现。


查看完整回答
反对 回复 2021-12-01
  • 2 回答
  • 0 关注
  • 137 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信