2019-05-27 jave核心代码看书笔记(五)

1.java中,子类数组的引用可以转化为超类数组的引用,而不需要采取强制类型转化

Manger[] mangers =new manger[10];
//转化为Employee[]数组完全合法
Employ[] staff =mangers;

因为每一个经理也一定是一个员工,此时在进行赋值

staff[0]=new Employee{"jack",....}.

因为staff[0]与manger[0]引用同一对象,此时编译器接纳了,及把一个普通员工纳入经理行列,此时调用mangers[0]中,经理的专有的方法,就会参数ArrayStoreException
2.当一个值存入变量时,编译器将检查是否允许该操作
①子类的引用赋值该超类的变量,允许的
②超类的的引用赋值给子类的变量,需要进行强制类型转换,才能通过运行时候的检测:进行强制装换时,需要检查是否能强制转换

if (staff[1] instanceof Manger ){
//进行stall[1]强制转化为Manger的变量
} 

3.Protected相关(https://blog.csdn.net/qq_17885583/article/details/80045006)
①要想用子对象访问父类的protected实例域或方法,必须在该子对象定义的类的方法体中,即A类中方法可以通过子对象this或new出了的a子对象来调用父类的protected实例域或方法,如果不在A自身类中,则不允许调用。如上,B类中,不允许new出来的子对象a来调用其父类的protected实例域或方法(等价于Manager类中不能访问其他Employee对象中的这个域)。
②要谨慎使用 protected 属性。假设需要将 Employee 类提供给其他程序员使用,而在这个类中设置了受保护的 hireDay 域。其他程序员派生出了 Manager 类和 Secretary 类。现在如果需要对 Employee 类的实现进行修改,如将 hireDay 修改为 private,通过 getHireDate 方法访问,这样就必须通知其他使用这个类的程序员不能再通过 this.hireDay 的方法访问。这违背了 OOP 提倡的数据封装原则

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 5继承 5.1 类、超类和子类 重用部分代码,并保留所有域。“is-a”关系,用extends表示。 已存在的类被...
    我快要上天啦阅读 1,007评论 1赞 3
  • 父类与子类 在Java术语中,如果C1类扩展自另一个类C2,我们称C2为父类,也称超类或基类,称C1为子类,也称次...
    Steven1997阅读 1,353评论 1赞 2
  • 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物...
    sinpi阅读 1,262评论 0赞 4
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,855评论 1赞 32
  • 1、.java源文件: 一个以”.java“为后缀的源文件:只能有一个与文件名相同的类,可以包含其他类。 2、类方...
    Hughman阅读 1,819评论 1赞 9

友情链接更多精彩内容