gpt4 book ai didi

java - 模板方法模式问题

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

如果我有一个抽象的Parent类,它有一个templateMethod和一个具体的Child类:

abstract class Parent
{
final void templateMethod()
{
foo();
}

abstract void foo();
}

class Child extends Parent
{
@Override
void foo()
{
System.out.println("foo");
}
}

如果我只想让用户知道 templateMethod 并且不想将 foo 方法暴露给类 Child',我该怎么办?用户同时让 Child 类定义 foo 方法的实现?或者,模板方法不适合这种情况吗?那么,我还可以使用其他策略吗?

最佳答案

正如 JB Nizet 在评论中所建议的,您可以这样做:

abstract class Parent {
final void templateMethod() {
foo();
}

abstract protected void foo();
}

class Child extends Parent {
@Override
protected void foo() {
System.out.println("foo");
}
}

由于 Parent.foo()保护,因此只有 Parent 的子类可以调用该方法。

您可能还会发现这个问题很有帮助:What is the difference between public, protected, package-private and private in Java?

关于java - 模板方法模式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59134369/

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