首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模板方法模式问题

模板方法模式问题
EN

Stack Overflow用户
提问于 2019-12-02 15:29:48
回答 1查看 39关注 0票数 0

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

代码语言:javascript
复制
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方法的实现,该怎么办呢?或者,模板方法在这种情况下不合适吗?那么,有没有其他我可以使用的策略?

EN

回答 1

Stack Overflow用户

发布于 2019-12-07 00:37:00

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

代码语言:javascript
复制
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()protected,因此只有Parent的子类可以调用该方法。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59134369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档