C++喜欢在Java中受保护
c++ like protected in java
可能的重复项:
如何使数据成员仅对类和子类可访问
在爪哇中,
可以从类、其子类以及同一包中存在的所有类中访问受保护的成员,
但是我希望成员只能从类及其子类访问(就像C ++中的受保护成员一样)。
例如::
class A
{
protected void fun()
{
System.out.println("Hello");
}
}
class B
{
public static void main(String args[])
{
A a = new A();
a.fun();
}
}
在这里,A 的 fun() 可供 B 访问,即使 B 不是 A 的子类。
如何使不是 A 子类的所有类都无法访问 A?
编辑::我想在Java中实现这一点。
在Java中,没有办法做到这一点。
也就是说,您(理想情况下)控制包中的所有代码,因此您只需要确保自己不使用它即可。
在java中没有办法做到这一点。受保护意味着对同一包中的继承者和类是可见的。但是你可以密封你的包(http://docs.oracle.com/javase/tutorial/deployment/jar/sealman.html),这样没有人可以在你的包中创建新的类。
在 Java 中,protected 意味着"由继承者和同一包中的其他人访问"。
在C++中,受保护的意思是"继承人可以访问"。
由于 Java 中的包可访问性,它们并不真正等效。
在 Java 中模仿C++保护的唯一方法是在它们自己的包中声明类,但我不建议这样做。
相关文章:
- C++:无法访问声明的受保护成员
- 继承和友元函数,从基类访问受保护的成员
- 为什么派生类的好友不能使用受保护的成员?
- C++:为什么无法在派生类中访问受保护的构造函数?
- 公共/私有/受保护是否会更改内存中结构的排列?
- 在父类中公开受保护的构造函数
- 如何从其他结构访问受保护的结构变量
- 如何实现返回受保护结构的私有函数
- 相同的层次结构,访问基类的受保护成员时的行为不同
- 从模板化父类中的派生内部类访问受保护的成员变量
- 为什么继承的受保护构造函数不能公开?
- 在使用受保护和继承时无法访问在类中声明的私有成员
- C++中的受保护变量
- 在此上下文中受保护 c++
- 同一模板类但模板类型的受保护成员
- 基类中受保护的纯虚函数如何被基类的友元类使用?
- 受保护的嵌套结构不能用作派生外部类中的返回类型?
- 有没有办法通过 main 函数访问受保护的矢量大小而无需将其转换为公共?
- C++喜欢在Java中受保护
- C++继承和受保护基类成员的访问:用Java风格做这件事是个坏主意吗