猿问

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

我正在编写一个扩展 ArrayList 类的算法。这里,使用算法类的实例,可以调用 ArrayList 的所有方法。我如何限制只能调用算法类中定义的方法,而算法类只能通过以下方式访问所有 ArrayList 的方法自己的方法???谢谢


慕娘9325324
浏览 138回答 2
2回答

青春有我

不要扩展ArrayList. 而是将其实例化为私有成员字段。这样您就可以完全控制列表。例如public class YourList<T> {&nbsp; &nbsp; private ArrayList<T> list;&nbsp; &nbsp; public YourList() {&nbsp; &nbsp; &nbsp; &nbsp; list = new ArrayList<>();&nbsp; &nbsp; }&nbsp; &nbsp; // example method&nbsp; &nbsp; public void add(T t) {&nbsp; &nbsp; &nbsp; &nbsp; list.add(t);&nbsp; &nbsp; }}我添加了一个类型参数,T因为您不想使用原始类型。你会像这样使用它YourList<String> list = new YourList<>();list.add("String");YourList<Integer> otherList = new YourList<>();list.add(1);

慕神8447489

您不必“强迫”您的用户调用您的子类。按照设计,Java 将仅运行在子类中重写的方法,给定ArrayList.&nbsp;超类ArrayList将提供 API(您不能阻止其他类访问超类中声明的公共方法),但所有重写的方法都将按照您的子类中的定义运行。然后,您的子类可以选择在适当的时候ArrayList通过使用super关键字来运行方法实现。
随时随地看视频慕课网APP

相关分类

Java
我要回答