gpt4 book ai didi

java - 为什么扩展抽象类的类中的方法即使没有被调用也会运行?

转载 作者:行者123 更新时间:2023-12-01 17:50:51 25 4
gpt4 key购买 nike

考虑以下因素:

public class OuterClass {
static class NestedClass extends AbstractList<List<Integer>> {
void add(/* parameters here */) {
// note this method is not declared public
// print here does NOT appear in output
// implementation details here
}

public int size() {
// print here appears in output
// implementation details here
}

public List<Integer> get(int index) {
// print here appears in output
// implementation details here
}
}

public static List<List<Integer>> method(/* parameters here */) {
NestedClass nc = new NestedClass();
nc.add(..);
}
}

然后在一个单独的方法中,我创建 NestedClass 的实例。当我运行代码时,没有调用 getsize ,打印语句出现在输出中。这是如何/为何发生的?我明白getsize是必要的,因为AbstractList已扩展,但我从不调用 sizeget .

一般来说,如果 B延伸A ,是否会调用 B 的方法本质上调用 B 中实现的重写抽象方法?

谢谢

最佳答案

这就是抽象类/方法的全部要点:您的基类定义了一组抽象方法A,以及一组B非抽象方法。

现在,最有可能的是,B 之外的方法将调用 A 中的方法。

换句话说:您使用抽象类来固定某些行为(通过从B存储桶中编写方法),但为了允许不同的总体行为,您允许用户以不同的方式实现方法(通过创建不同的子类,以不同的方式实现抽象方法)。

关于java - 为什么扩展抽象类的类中的方法即使没有被调用也会运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50342245/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com