类继承的基础问题

superrg 2003-11-05 02:53:17
在java中,能不能实现这样的功能:

假设类A及B如下:
public class ClassA extends object{
public ClassA(){}
public void MethodA(){}
}

public class ClassB extends ClassA{
public ClassB(){}
}

能不能实现在类B继承类A后,MethodA仍可以在ClassB中调用,但不能供其它类调用,即MethodA在ClassB中的权限变成private呢???
如果在C++中,则可以表示为:
class ClassB:private ClassA
{

}
在java中能不能实现呢???
...全文
22 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
noratong 2003-11-05
  • 打赏
  • 举报
回复
那就不用继承,把classA写成classB的私有成员变量。
realzealy 2003-11-05
  • 打赏
  • 举报
回复
不是考不考虑的问题,这样做不符合语法,编译都无法通过,我想你该想想别的方法而不用直接继承来实现,比如组合的方法,内部类继承,然后再让它们私有化,别的类就不能使用了
beatingHeart 2003-11-05
  • 打赏
  • 举报
回复
用组合
public class B {

private A a;
...
// 提供新的接口
...
}
这样就可以把A的功能选择性的提供给B类外部的用户了。
superrg 2003-11-05
  • 打赏
  • 举报
回复
to realzealy(国米无敌):
有点道理,但如果不考虑向上转型呢???
loveyousomuch 2003-11-05
  • 打赏
  • 举报
回复
好像没有这个功能



hyhu 2003-11-05
  • 打赏
  • 举报
回复
那没法向上回溯,这是不符合继承规约的!
superrg 2003-11-05
  • 打赏
  • 举报
回复
to all:
晕了,我的意思是ClassA的源码不能修改的前提下~~~~~

也就是说只能改ClassB的源码呀。。。。
realzealy 2003-11-05
  • 打赏
  • 举报
回复
你改变子类权限为private肯定不行,因为子类只能扩充父类,可以把MethodA(){}变成public, 而不能缩小父类用private,试想你改了以后如何向上转型为父类
rainight 2003-11-05
  • 打赏
  • 举报
回复
在java中,你应该声明MethodA为protected。
hyhu 2003-11-05
  • 打赏
  • 举报
回复
写错了是protected
hyhu 2003-11-05
  • 打赏
  • 举报
回复
可以啊
public class ClassA extends object{
public ClassA(){}
protect void MethodA(){}
}

public class ClassB extends ClassA{
public ClassB(){}
}
只是继承自A的类才可以显式调用!

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧