gpt4 book ai didi

java - 只能从父类(super class)(C++ 和其他语言)访问的方法

转载 作者:行者123 更新时间:2023-11-28 02:10:45 25 4
gpt4 key购买 nike

假设我有一个提供公共(public)模板方法的父类(super class)。子类将不得不实现一些子操作。我如何声明此子操作以确保只能从 SuperClass 调用它们?有 protected,但据我所知,这是相反的:子类可以访问 protected 父类(super class)成员。 我想允许父类(super class)(而且只有父类(super class)!)调用子类成员。

class SuperClass{
public:
void templateMethod(){
this->op1();
this->op2();
}

// how to declare these? public? protected?
virtual void op1() = 0;
virtual void op2() = 0;
}

class SubClass : public SuperClass{
// how to declare these? public? protected?
virtual void op1() { ... };
virtual void op2() { ... };
}

我目前正在使用 C++ 和 Matlab,但我也对考虑其他语言的一些一般性评论非常感兴趣。

最佳答案

在 C++ 中,您可以通过在所有类中使 op1op2 private 来实现您的目标。这种技术在 C++ 中是惯用的。

基类通过实例化对象时设置的 v 表访问子类中的 private 函数。

当然,没有什么可以阻止您的子类中的另一个函数调用该子类中标记为 private 的函数。如果您想那样做,那么子类将不是该函数的正确位置。

对于 Java 也是如此,当然 virtual 是自动的。

关于java - 只能从父类(super class)(C++ 和其他语言)访问的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35841795/

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