[转载] 一文彻底搞懂父类引用指向子类对象问题
参考链接: 用子类引用子类对象 vs 父类引用
public class Father {
private String name;
private int age;
private int weight;
public void eat() {
System.out.println("Father is eating");
}
private void run() {
System.out.println("Runing....");
}
public Father() {
name = "zhangsan";
age = 23;
weight = 60;
}
public static void main(String[] args) {
/*
*
*如果子类的构造方法中对继承来自父类的变量重新赋予新的值的话,那么这样子调用的将会是子类的变量
*如果子类重新定义了和父类一样的变量的话那么这样将会输出的是父类的变量
*Father f = new Son();
*f.age f.weight
*/
Father f = new Son();
f.eat();
f.run();
System.out.println("。。。。。。年龄是:" + f.age + "\t" + f.weight + "\t" + f.name);
// Son s = new Father();这样子会报错
}
}
class Son extends Father{
private int salary;
public void eat() {
System.out.println("Son is eating");
}
public void sleep() {
System.out.println("sleep ....");
}
public Son() {
name = "lisi";
age = 3;
salary = 60;
weight = 70;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
最终输出的结果 f.eat()输出的是子类中重写父类中的eat()方法
f.run()输出的是父类中的run()方法(实际上是输出的子类中的,只是因为子类中没有重写,所以看上去输出的是父类中的,实际调用的是子类的)
f.age和f.weigth输出的是子类的构造方法中重新赋值的
f.name输出的是父类中的属性
由此可以看出,父类引用指向子类对象,最终这个父类引用所拥有的变量是是子类中的(如果构造方法中没有重新赋值那就和父类中的一样,如果重新赋值了那就是子类中赋值以后的),方法也是子类中的(如果重写了就是重写之后的方法,如果没有重写的那就和父类中的一样)
[转载] 一文彻底搞懂父类引用指向子类对象问题相关推荐
- java 父类引用指向子类对象---动态绑定
知识点: 1.java 中父类引用指向子类对象时动态绑定针对的只是子类重写的成员方法: 2.父类引用指向子类对象时,子类如果重写了父类的可重写方法(非private.非 final 方法),那么这个对 ...
- 父类引用指向子类对象
父类引用指向子类对象,如何访问子类的属性? 1.第一种办法最简单,强制类型转化为子类. 2.父类引用指向子类对象,由于当前引用为父类,只能访问父类的字段和方法,但是根据多态性可以访问子类的方法,在这个 ...
- Java多态-如何理解父类引用指向子类对象
java多态,如何理解父类引用指向子类对象 要理解多态性,首先要知道什么是"向上转型". 我定义了一个子类Cat,它继承了Animal类,那么后者就是前者是父类.我可以通过 C ...
- 父类引用指向子类对象详解
父类引用指向子类对象 父类引用指向子类对象指的是: 例如父类Animal,子类Cat,Dog.其中Animal可以是类也可以是接口,Cat和Dog是继承或实现Animal的子类. Animal ani ...
- java多态 成员访问特点(父类引用指向子类对象)
>父类 子类 package com.dareway.demo;public class Father {public String index="fatherLogo"; ...
- java父类引用子类_java多态,如何理解父类引用指向子类对象
要理解多态性,首先要知道什么是"向上转型". 转型是在继承的基础上而言的,继承是面向对象语言中,代码复用的一种机制,通过继承,子类可以复用父类的功能,如果父类不能满足当前子类的需求 ...
- Java多态 父类引用指向子类对象
原文地址http://www.cnblogs.com/111testing/p/6880831.html Java多态的三个必要条件: 1. 继承 2. 子类重写父类方法 3. 父类引用指向子类对象 ...
- Java基础之父类引用指向子类对象
多态(Polymorphism) 多态是同一个行为具有多个不同表现形式或形态的能力. 多态就是同一个接口,使用不同的实例而执行不同操作,如图所示, 多态的有点 消除类型之间的耦合关系 可替换性 可扩充 ...
- 多态之父类引用指向子类对象
首先,这是多态的知识,多态有三要素: 继承 , 重写父类的方法 , 父类引用指向子类对象 以下是我对于多态的一些理解,如有不当,还请指正! 一,多态的概念与特征: 1.什么多态 多态是同一个行为具有多 ...
最新文章
- 276.	Paint Fence
- clickhouse常用sql
- navicat连接mysql闪退_Navicat连接MySql8.0的各种问题及解决方法
- 【小白学云计算】xmpp开源服务器的配置和安装图文详解
- windows 64位PHP5.5配置xhprof
- Spring JDBC 框架中, 绑定 SQL 参数的另一种选择:具名参数(named parameter)
- 如何快速生成100万不重复的8位随机编号?
- 理解Android中的MeasureSpec
- 小米4c android5.1,奇兔刷机全网独家攻破小米4c安卓5.1支持一键刷机ROOT
- Flips测试类(page43)
- 本地win10服务器不能复制文件,解决Win10无法复制文件并提示“0x80070032”错误的方法...
- 7-11 机工士姆斯塔迪奥(PTA程序设计)
- 小虎整合:电商浏览器插件工具常用的有哪些?在哪里可以找到?
- 秒杀各种Pay?Samsung Pay支付宝功能率先体验
- 线性规划和对偶规划学习总结
- 移动端网页特效以及常用开发框架
- Windows 注册和取消注册一个dll或者ocx
- archlinux 解决蓝牙无法连接问题
- matlab 画星座图,基于k-D树邻近点搜索的彩色星座图绘制[Matlab]
- 【红米刷机】红米手机卡刷稳定版教程
热门文章
- idea springboot热部署无效问题
- webpack+react+redux+es6开发模式
- VS2017安装配置Qt
- java类初始化顺序_《To Be a Better Javaer》-- Java 基础篇 vol.2:面向对象
- (2021) 24 [持久化] 文件系统API
- Python二级笔记(10)
- php cdata,PHPcdata处理(详细介绍)_PHP教程
- window设置快捷键左右方向键
- ANSIBLE---变量
- windows下最好的C++ IDE