社区
J2ME
帖子详情
[在线等待]类成员访问控制的老问题—如只给答案分低,给出解决方法再补高分。
hanzsim
2008-08-26 09:40:04
public、protected、privated的控制效果很清楚。但看见好几篇文章说private protected连用是私有保护控制,我的程序正需要这样的权限,就是本类、子类可以访问,但其它类不能访问此成员,在代码里就这么改了,可编译报错。这些文章说的是错的吗?有没有什么方法,使类成员只对本类、子类可见,而对类外不可见?
...全文
152
11
打赏
收藏
[在线等待]类成员访问控制的老问题—如只给答案分低,给出解决方法再补高分。
public、protected、privated的控制效果很清楚。但看见好几篇文章说private protected连用是私有保护控制,我的程序正需要这样的权限,就是本类、子类可以访问,但其它类不能访问此成员,在代码里就这么改了,可编译报错。这些文章说的是错的吗?有没有什么方法,使类成员只对本类、子类可见,而对类外不可见?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hanzsim
2008-08-26
打赏
举报
回复
汗。。。要用子类创建对象的,父类作为抽象类使用,内部类不行啊。
贝壳鱼
2008-08-26
打赏
举报
回复
还有个比较简单的方法, 刚想出来。
但是我不知道你的程序结构是什么样的, 如果基于你这种要求,我觉得你的子类可以直接写到父类的内部,作为内部类。 这样子类能用父类的私有成员, 而且觉得不会被外部代码打扰。 哈哈。
ZangXT
2008-08-26
打赏
举报
回复
你看到的这样的说法很有可能是C++的
ZangXT
2008-08-26
打赏
举报
回复
java没有这样的语法
C++有,继承的时候可以指定继承的级别。
java都是 public继承 ,所以没有private protected这样的语法 。
贝壳鱼
2008-08-26
打赏
举报
回复
那就再绕一下
做一个接口
让子类里面加一个内部类去实现这个接口。 然后再把这个接口 set 给 父类, 让父类把数据传给接口, 也就是子类的内部类会接收到这些数据, 这些数据也就自然的对外隐藏了。
当然这个接口如何set 你自己好好想想吧。
hanzsim
2008-08-26
打赏
举报
回复
简单的说就是继承到子类的成员就不能对外不可见?
hanzsim
2008-08-26
打赏
举报
回复
有问题。父类中要被覆盖的方法,应该是protected或public,那么覆盖后的方法也必是protectee或public。可这样这个方法不就暴露了?我的目的是封装一些数据在父类,但2个都子类要使用这些数据,又要防止类外部代码直接修改这些数据,要求只能在子类内部,通过方法来修改。
比如,父类有数据level,要让所有子类都能继承,但子类的实例外要求此成员不可见,需要通过upgrade()方法来修改。怎么办?
hanzsim
2008-08-26
打赏
举报
回复
嗯,确实是一种解决方法,虽然不是很理想。我先试试改造程序的效果,一会再回来。
另:真的有好多文章说到了private protected的复合用法的。郁闷死我了,很多地方确实需要私有保护的访问限制。
贝壳鱼
2008-08-26
打赏
举报
回复
private protected xxxx 没这种语法
你的需求跟想让子类去用父类的私有成员是一个问题。 呵呵。
其实解决方法也比较多, 就是得绕一下, 我现在能想到的就是, 可以让子类去覆盖父类的一个固定方法, 这个方法的参数就是父类要传给子类的成员变量, 比如:
public class A {
private int p = 50;
private A a;
public A() {
}
public void setA(A a) {
this.a = a;
}
public void setToA() {
a.pass(p);
}
protected void pass(int i) {
}
}
public class B extends A {
public B() {
super.setToA(this);
}
private int pp;
protected void pass(int i) {
pp = i; // got super class private value
}
}
hanzsim
2008-08-26
打赏
举报
回复
哭。。。这方法能用在J2SE中,不能用在J2ME中。。。
hanzsim
2008-08-26
打赏
举报
回复
哈哈,找到解决方法了,又学会了一招。
将父类成员定义成private,然后从子类可以访问到!
不过这样说来,成员的安全性不就得不到保障了?!
远程访问
解决
方案 Exceed TurboX 在医疗保健和生命科学领域的应用
生命科学与医疗工作者可以远程操作要求苛刻的图形软件
解决
方案,但他们需要快捷且响应迅速的远程访问。 集中化工作的关键是远程工作人员对性能、可靠性和协作感到满意。 IT 部门一直希望通过标准化用户工作站和...
医疗保健和生命科学组织的远程访问
解决
方案
对远程访问
解决
方案来说,失去连接就意味着工作的丢失。 许多
解决
方案不提供重新连接到现有的后端会话。 这意味着在短暂的网络中断时,远程工作人员会丢失他们的工作,而 IT 则需要大量的维护工作来关闭占用资源却...
播放器实战22
解决
花屏与卡顿
问题
查看ffmpeg结构体AVFrame中的三个
成员
: 01.uint8_t *data[AV_NUM_DATA_POINTERS]; data存储原始的音视频数据(视频为YUV,音频为PCM)。有两种存储音视频的方式,plannar方式和packet方式 plannar方式:通道n的数据...
远程虚拟桌面软件 OpenText Exceed TurboX (ETX)在医疗保健和生命科学领域的应用
如果远程工作人员具有良好的远程访问性能,那么...对于生命科学来说,使用远程访问可以加速获得结果的过程,无论是新药物还是新医疗设备,都可以更快地推向市场,因为团队
成员
可以从任何地方访问所有的信息和成像数据。
生命科学组织使用 OpenText ETX 随时随地为医疗保健和生命科学人员提供相关信息
如果远程工作人员具有良好的远程访问性能,那么...对于生命科学来说,使用远程访问可以加速获得结果的过程,无论是新药物还是新医疗设备,都可以更快地推向市场,因为团队
成员
可以从任何地方访问所有的信息和成像数据。
J2ME
13,100
社区成员
26,495
社区内容
发帖
与我相关
我的任务
J2ME
Java J2ME
复制链接
扫一扫
分享
社区描述
Java J2ME
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章