我在派生类中创建了基类的实例,并尝试访问受保护的成员.

我可以直接访问派生类中的受保护成员,而无需实例化基类.

基类:

package com.core;

public class MyCollection {

      protected Integer intg;
}

同一包中的派生类 –

package com.core;

public class MyCollection3 extends MyCollection { 

 public void test(){

  MyCollection mc = new MyCollection();
  mc.intg=1; // Works
 }
}

不同包中的派生类 –

package secondary;

import com.core.MyCollection;

public class MyCollection2 extends MyCollection{ 

 public void test(){
  MyCollection mc = new MyCollection();
  mc.intg = 1; //!!! compile time error - change visibility of "intg" to protected
 }
}

当派生类也在同一个包中但是当派生类在不同的包中时,如何使用基类实例访问派生类中基类的受保护成员?

如果我将受保护的成员标记为“静态”,那么我可以使用驻留在不同包中的派生类中的基类实例来访问基类的受保护成员.

解决方法

你不能这样做是对的.您无法访问该字段的原因是您与该类不在同一个包中,也不访问同一类的继承成员.

最后一点是关键点 – 如果你写的话

MyCollection2 mc = new MyCollection2();
mc.intg = 1;

然后这会工作,因为你正在改变你自己的类的受保护成员(通过继承存在于该类中).但是,在您的情况下,您尝试在不同的包中更改其他类的受保护成员.因此,如果您被拒绝访问,那就不足为奇了.

java – 使用基类实例在派生类中访问的受保护成员的更多相关文章

  1. 13.2 Swift派生类的构造方法

    /**13.2-派生类的构造方法.mp4*/classAB{vara:Intvarb:Int//指定构造方法,不允许出现构造器代理,self.init(...)init{self.a=aself.b=bprint("ClassABinit!

  2. 13.4 Swift派生类构造方法的两段式构造

    /**13.4-派生类构造方法的两段式构造*//**两段式构造-构造过程可以划分为两个阶段第一阶段,确保所有的存储属性都初始化完毕,第二阶段,对父类中的存储属性做进一步的处理。可以防止属性在被初始化之前访问,也可以防止属性被另外一个构造器意外的赋值。

  3. Swift3.0 - 类型转换

    Swift使用is判断当前对象是否为某个类的对象,作用同Java的instanceof关键字;Swift使用as作为强转操作符,将基类引用转换为派生类引用。

  4. java – 使用基类实例在派生类中访问的受保护成员

    我在派生类中创建了基类的实例,并尝试访问受保护的成员.我可以直接访问派生类中的受保护成员,而无需实例化基类.基类:同一包中的派生类–不同包中的派生类–当派生类也在同一个包中但是当派生类在不同的包中时,如何使用基类实例访问派生类中基类的受保护成员?

  5. c# – 在派生类中创建一个只读属性

    我想要实现的目标如下:我在BaseClass中声明了一个属性.如果通过基类’指针访问此属性,则只有getter可用,但如果使用派生类指针,我希望能够获取并设置该属性.所以intellisense甚至不应该显示基本指针的setter.一个现实的例子:考虑一种情况,即您拥有从Person类派生的Parent和Child类.想象一下属性-RestrictionLevel,两者都可以读取它,但只有父级可以设置值.有没有更好的方法来设计这种情况?

  6. c# – 从派生类隐藏属性

    解决方法在基本Person类中使Name属性为virtual.在派生的Spy类中,覆盖该属性并在getter中抛出Exception.但是,我建议不要抛出异常因为,它打破了LSP.这意味着什么,我总是可以这样做并将其传递给其他方法,可能就像这种方法不知道体育场周围的一些间谍漫游,在做一个简单的诚实任务时崩溃!

  7. c# – “继承深度”对于方法意味着什么?

    当我点击“分析解决方案”时,我得到结果:>可维护性>循环复杂性>继承深度>类耦合>代码行我明白这些是什么意思,除了类中每种方法都有不同的“继承深度”值,还有一个较大的类.有没有人对这可能在说什么的解释?

  8. c# – 在派生的抽象类中强制实现事件

    这取决于您的用例.请注意,这不是强制派生类中任何内容的实现–但我认为这是您真正想要的.

  9. c# – 从基类方法克隆派生类

    >有没有一种好的方法(模式)来实现一个基本的克隆方法,它可以按照我的预期工作,或者我必须在每个派生类中编写相同的代码(我真的想避免这种情况……)谢谢你的帮助解决方法只需覆盖克隆并使用另一种方法来创建CreateInstance然后做你的东西.这样你就可以只有Base类来避免泛型.

  10. c – AfxGetInstanceHandle()触发断言失败

    我在我的C程序中使用MFC(使用VisualStudio2008).我必须在程序的开头调用AfxGetInstanceHandle().此功能触发断点:ASSERT语句失败.我想知道,为了初始化afxCurrentInstanceHandle,我们尝试访问之前,你是否有事要做.PS:我在一个共享的DLL中使用MFC.编辑我的代码是这样的:我想使用InstanceHandle来初始化一个CComMo

随机推荐

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. Mybatis分页插件PageHelper手写实现示例

    这篇文章主要为大家介绍了Mybatis分页插件PageHelper手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  5. Java 阻塞队列BlockingQueue详解

    本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景,通过实例代码介绍了Java 阻塞队列BlockingQueue的相关知识,需要的朋友可以参考下

  6. Java异常Exception详细讲解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  7. Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧

  8. 面试突击之跨域问题的解决方案详解

    跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。那怎么解决这个问题呢?接下来我们一起来看

  9. Mybatis-Plus接口BaseMapper与Services使用详解

    这篇文章主要为大家介绍了Mybatis-Plus接口BaseMapper与Services使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  10. mybatis-plus雪花算法增强idworker的实现

    今天聊聊在mybatis-plus中引入分布式ID生成框架idworker,进一步增强实现生成分布式唯一ID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部