继承和方法重写已经很熟悉了,这次

主要验证一下,当一个父类的引用指向一个对象的时候,它会调用子类的方法,而不是父类的。

引用在栈内存中存在对象的内存地址。真正的对象(通过 new Student()创建的)存放在堆内存里。

在这块堆内存区域内,存在的是子类的属性(包括自己特有的,以及通过super()构造方法中从父类获得的)

和方法(继承父类但没有覆盖的,以及覆盖父类的方法和自己特有的),尽管引用是声明为父类的引用,

但是它指向的子类的对象,在执行方法的时候,是通过引用指向的堆内存区域内执行的。也就是到底执行父类

方法还是子类方法是由对象决定的,跟引用没有直接关系。

演示代码如下:

Person.java

public class Person{

private String name;

public Person(){}

public void setName(String name){

this.name = name;

}

public String getName(){

return this.name;

}

public void introduce(){

System.out.println("Hello, I'm a Person object, and my name is "

+getName());

}

}

Student.java

public class Student extends Person{

public Student(){

super();

}

public void introduce(){

System.out.println("I'm a Student object and my name is "

+getName());

}

}

Test.java

public class Test{

public static void main(String[] args){

Person p = new Student();

p.setName("^-^");

p.introduce();

}

}

输出结果为:

I'm a Student object and my name is ^-^

java子类引用指向父类对象_java 中父类引用指向子类对象时相关推荐

  1. java子类和父类实例_java中父类与子类之间的转换示例

    java中父类与子类之间的转换示例有以下三点: 示例一 父类强制转子类 pre class="brush:php;toolbar:false">Father f = new ...

  2. java字符串转json取集合_Java中Json字符串直接转换为对象的方法(包括多层List集合)...

    使用到的类:net.sf.json.JSONObject 使用JSON时,除了要导入JSON网站上面下载的json-lib-2.2-jdk15.jar包之外,还必须有其它几个依赖包:commons-b ...

  3. 如何销毁一个实例化对象_JAVA中如何创建和销毁对象

    第1条 考虑用静态方法代替构造器 类可以通过静态工厂方法来提供它的客户端,而不是通过构造器.提供静态工厂方法而不是公有构造器,这样做具有几大优势. 1.静态工厂方法与构造器不同的第一大优势在于,它们有 ...

  4. java子类引用指向父类对象_Java多态 父类引用指向子类对象

    Java多态的三个必要条件: 1. 继承 2. 子类重写父类方法 3. 父类引用指向子类对象 然后看一个例子 输出结果为: 给出结论:Father  c  =  new  Child()    在c的 ...

  5. java的对象是什么意思_Java中对象和对象引用的区别,引用、指向是什么意思

    Java的变量分为两大类:基本数据类型和引用数据类型. 其中基本类型变量有四类8种:byte short int long float double char boolean,除了8种基本数据类型变量 ...

  6. java父类声明子类实现_java中父类声明子类实例化

    问题: 1.比如两个类父类:Person 子类 Student extends Person在使用时候,这样写:Person person=null; //声明对象person=new Student ...

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

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

  8. java子类代码块_java中父类子类静态代码块、构造代码块执行顺序

    父类静态(代码块,变量赋值二者按顺序执行) 子类静态 父类构造代码块 父类构造方法 子类构造代码块 子类构造方法 普通方法在实列调用的时候执行,肯定位于上面之后了 //父类A public class ...

  9. java不能覆盖父类的_java中子类覆盖父类方法所必须满足的条件

    一.描述 子类重写(覆盖)父类的方法必须满足的条件: 1.父类中的方法在子类中必须可见,即子类继承了父类中的该方法(可以显式的使用super关键字来访问父类中的被重写的方法), 如果父类中的方法为pr ...

最新文章

  1. DB性能调优之RAID比较
  2. LInux 下安装 python notebook 及指向路径,运行计时,炫酷的深蓝午夜主题,本地登陆远程服务器
  3. python画饼图程序_python使用matplotlib画饼状图
  4. Netty源码学习(零)前言
  5. 荣耀开年第一机!荣耀60 SE今日官宣:搭载天玑900处理器
  6. LeetCode 128. 最长连续序列(Longest Consecutive Sequence)
  7. python能做什么工作-学完Python我们可以做什么工作?
  8. 百度AI语音语义一体化技术 识别的同时进行语义分析
  9. 装Windows 8 过程中遇到的问题,及解决方案
  10. LAMP平台部署及应用(二) 安装Discuz!论坛系统
  11. 域控设定PC定时关机策略操作流程-呈上
  12. 静态文件html中加入php的Url,YII中URL伪静态加前缀.html的方法
  13. 删除word中自己插入的单行、双行线
  14. 你真的会开会吗?开会无用说
  15. 正元一卡通对接代码Webservice
  16. c语言公开课教案,9、祝福优质课一等奖教案
  17. tableau-瀑布图
  18. AIDE手机编程初级教程(零基础向) 3.2.1 设计欢迎页(主体)
  19. 提高app用户粘性的方法简析
  20. sublime3注册机使用

热门文章

  1. 7-119 奇偶分家
  2. 对游戏某个系统的分析
  3. 倒计时一个月 | AIOps 风向标 GOPS全球运维大会深圳站
  4. 带rt内核的linux镜像,rtlinux安装
  5. 程序员 男方净身出户离婚协议书
  6. JavaScript延时器和计时器
  7. ORACLE CASE函数
  8. python3的fft_使用python进行FFT变换
  9. Nginx配置valid_referer解决跨站请求伪造(CSRF)
  10. Dreamweaver 概述