理清楚4个目标

  1. 父类引用(“名”)
  2. 父类对象(“实”)
  3. 子类引用
  4. 子类对象

理清楚几个操作

// 父类
public class parent{}// 子类
public class sun{}
  1. 父类引用指向父类对象
parent p1 = new parent();
  1. 子类引用指向子类对象
son s1 = new son();


3. 父类引用指向子类对象

parent p2 = new son();
  1. 子类引用指向父类对象(错误!
son s2 = new parent();


5. 将第3点强制转换为由子类引用指向该子类对象

son s3 = (son)p2;


6. 对于强制类型转换,转换结果不能是【子类引用指向父类】,这显然是错误的,java会进行强制类型转换检查。例如

parent p4 = new parent();
son s4 = (son)p4; // 错误!

弄明白几个操作

对于父类引用指向子类对象的情况,此时,父类引用只能操作父类的部分。

也就是说

能操作什么,取决于引用的类型,当然,与修饰限定符有关,只能操作publicprotected修饰符的东西

这也可以印证,为什么子类引用不能指向父类对象,因为,父类对象没有子类的方法,而子类引用又可以操作子类方法,就会造成错误。

父类引用子类对象的时候,只能使用父类的共有或者保护方法

可以看到,强制转换之后,就相当于子类引用指向了子类对象,也就是正常的情况了。

错误的做法,子类引用指向父类对象

对于多次继承,同样遵循父类与子类的关系

可以单独把继承链中的某两个类抽出来,看作父类和子类,然后关系就和上面说的一样了。

小结

整体来说,就说了几件事情

左边指向右边,有4种情况,其中【子类引用指向父类对象】是不允许的

然后,对于【父类引用指向子类对象】,可以变换为【子类引用转换为父类对象】

还有一些访问权限的事情,与访问修饰符有关。

【java】父类与子类的引用赋值关系相关推荐

  1. C++继承中父类和子类之间的赋值兼容

    文章目录 1 C++继承中父类和子类之间的赋值兼容 1.1 父子间的赋值兼容 1.2 特殊的同名函数 1 C++继承中父类和子类之间的赋值兼容 1.1 父子间的赋值兼容 在公有继承的条件下,子类对象可 ...

  2. 父类和子类间引用要注意的问题

    父类和子类间引用要注意的问题(索创java上第六章) 在发生数据隐藏的情况下(数据隐藏指子类中拥有与父类某属性相同的属性,父类的属性必须通过super才能访问到),父类和子类的声明引用的是同一个子类对 ...

  3. 父类对子类的引用(父类引用指向子类对象)

    (有什么错误希望大家可以指出来,谢谢.) 使用前提:在父类与子类之间的关系中,调用的方法要在父类中定义. 例如:Animal a=new Dog(); Animal类是Dog类的父类,声明的是一个An ...

  4. java 父类获取子类对象_Java多态性详解 (父类引用子类对象)

    面向对象编程有三个特征,即封装.继承和多态. 封装隐藏了类的内部实现机制,从而可以在不影响使用者的前提下改变类的内部结构,同时保护了数据. 继承是为了重用父类代码,同时为实现多态性作准备.那么什么是多 ...

  5. java父类转子类_java中什么是继承,和继承的接口的关系?

    继承的概念 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类. 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父 ...

  6. Java基础:子类与父类、子类与对象的关系、子类与父类同包时、不同包时的继承性

    继承:是一种由已有的类创建新类的机制. 1.利用继承这个机制,可以先定义一个共有属性的一般类,根据这个类再分别定义具有特殊属性的子类,子类继承了一般类的属性和方法,并根据自己的需求创建新的属性和方法: ...

  7. java 父类转子类_Java多态,对象转型,和简单工厂模式。希望对您有帮助!

    各位读者老爷们大家好鸭~图图又来了,今天我们要说一下"多态". 怎么理解这两个字呢?可以理解为同一个引用对象的不同表现形态,即将父类的引用指向子类的对象.这是比较官方的书面解释,大 ...

  8. java父类转换成子类_【转】java 父类与子类的转换

    最近同事调的一个服务报错,查看后是日期之间转换出的问题.代码里是把 java.sql.Date 类型的对象 强制转换为 java.sql.Timestamp 类型的对象.报java.lang.Clas ...

  9. java 父类访问子类_java中父类访问子类变量

    我们都知道,子类的方法可以访问父类的实例变量,这是因为子类继承父类就会获得父类的成员变量和方法:但是父类的方法水能访问子类的实例变量,因为父类根本无法知道它将被哪个子类继承,它的子类将会增加怎样的成员 ...

最新文章

  1. 中国地址住址五级以下
  2. 经典面试题: 为啥 ConcurrentHashMap 读操作不需要加锁?
  3. boost bind使用指南
  4. asp和php数据库怎么区分,asp与php的数据库有哪些区别
  5. 5.1.8 DELETE删除数据
  6. Android Studio 打开activity_main.xml不能正常显示
  7. 改进一个asp.net通用分页显示辅助类
  8. c++ 字符串拼接_python字符串零碎总结
  9. 直角三角形 纪中 1385 数学_斜率 英文题解
  10. 16个PLC入门基础知识,大学生学PLC就跟玩一样
  11. kali android命令大全,让你的安卓设备跑起kali——kali for android
  12. matlab 二维地图常用绘图函数用法(plot,fill,rectangle)
  13. 旋转卡(qia)壳 平面最远点对
  14. 自动摘要生成(三):词向量相似度与有效词含量
  15. 2014522420145238 《信息安全系统设计基础》第二次实验
  16. linux下安装php并配置运行环境
  17. 吴恩达深度学习课程-Course 2 改善深层神经网络 第三周 TensorFlow入门编程作业
  18. Go语言的反射三定律
  19. HTML样式中移动鼠标到指定位置改变光标形状
  20. redis.conf配置文件详解-0511-v1.0张雅慧

热门文章

  1. python2.7虚拟环境virtualenv安装及使用
  2. 49-今日交易总结.(2015.1.13)
  3. Flash中的SLC/MLC/MLC--基础
  4. 步骤菜单使用css3实现
  5. 设计模式读书笔记-----备忘录模式
  6. 继承之接口知识点和思考练习
  7. 如何在 C# 中用 SharpZipLib 进行 ZIP 压缩与解压(转)
  8. java 先序遍历_二叉树的前序中序后序遍历(java代码)
  9. java 编程原理_Java网络编程 -- 网络编程基础原理
  10. mysql动态sql是什么,mysql中动态sql的一次实际应用