中易网

在java 中子类对象为什么不能比父类对象有更严格的访问权限?

答案:5  悬赏:30  
解决时间 2021-04-27 13:11
在java 中子类对象为什么不能比父类对象有更严格的访问权限?
最佳答案
因为 向上转型的 及 java 程序 设计维护 的原因

例:
假设一个 父类A 拥有的方法 public void setXXX(){} 可以被其他任意对象调用
这个方法被子类B 覆写后 为 void setXXX(){} 即 默认的 访问权限 只能被本包极其子类 所访问

假设 其他包中的对象 C 调用 方法为 get( A a){
a.setXXX();
}
而此时 传入的 对象为 B类 对象 假设 为b 此时 b将转型为a 但是 b中的setXXX() 调用权限
已经 被 缩小了 这将 造成错误

以上只是一个例子 还有其他出于 易维护 易代码结构设计的 设计思想 原因....
全部回答
你这样做,那JAVA还有什么用?连面向对象最重要的核心之一多态都没了
假如父亲为public权限 儿子用private权限 这样就绝子绝孙了 懂么?
左边是栈空间,右边是堆空间,栈空间的变量t储存着一个指向堆空间某个对象的地址
子类对象“为什么可以”作为父类对象来使用? 简单的回答:因为可以这样,所以可以这样。也就是说因为内存结构支持这样,所以才有了这种语法。 对象实际上就是方法区中的代码+堆中的变量空间,按照类装载规则,当装载子类时一并加载父类,这就意味着只要子类多的代码在内存,则父类的代码也会在内存。创建对象时,按照规则,将会在堆空间中开辟一个空间,这个空间就代表对象。包含的元素有哪些呢?一是类所包含的成员变量(非静态),二是类的超类所包含的成员变量,三是一个指向方法区中类代码的指针。 基于这种结构,不难理解通过父类引用子类的实质。不管通过什么引用,指向的还是那个内存区域,因为对象中包含父类的所有成员变量,所以可以按父类来“套”,通过父类指针访问的变量空间也是父类的变量(如果覆盖)。那么通过父类指针访问的方法呢,显然要通过对象中指向方法区的指针找方法,指向的是哪里?是子类。子类不包含方法怎么办,在找父类。 也就是说,如果发生覆盖,通过父类引用的空间是父类的,而方法是子类的。 简单回答了一下,没有仔细检查语句是否通顺。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
嫁出去的女儿可以分父母的家产吗?
如何去除小米粒?
关于建设银行网银USB KEY的问题
谁有最新的花街G
苏州山塘人家酒店在发一种全国通用的酒店会员
猫.有几条生命
怎么取消vista请用正版office的提示?
求几本人气高又很好看的玄幻类的小说
HP Compaq510可以耍2K9不
永登县坪城派出所在什么地方啊,我要过去处理
我家里的DNF怎么不安全检测了啊?而且运行不
有什么游戏可以在一台电脑上两个人一起玩
婴儿油自慰做润滑油好吗!
已知反射线(角),求尺规作入射线(角),如
为什么现在火车票退款只到账5元,是怎么回事
推荐资讯
三生三世十里桃花电视剧中谁的地位高
小儿呼吸道感染输液后能不能再吃点药
人为什么而活呢
帮我看看这个45级丐帮号天龙8部的好不好?
越野摩托车轮胎甩水有什么好的解决办法?
农村盖房要办什么手续阿
2010年江西教师招聘考试初中美术学科专业知识
腾讯拍拍图标要买或卖物品才能点亮吗?
为什么我玩NBA2K9变卡了,以前都不卡
我们这样配置装什么系统,我现在用的是XP.感觉
手机没开通GPRS包月,登3GQQ流量是多少?
一架飞机在距地面1500米的高空飞行,它第一次
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?