ParentChildTest.java
public class ParentChildTest {
public static void main(String[] args) {
Parent parent=new Parent();
parent.printValue();
Child child=new Child();
child.printValue();
parent=child;
parent.printValue();
parent.myValue++;
parent.printValue();
((Child)parent).myValue++;
parent.printValue();
}
}
class Parent{
public int myValue=100;
public void printValue() {
System.out.println("Parent.printValue(),myValue="+myValue);
}
}
class Child extends Parent{
public int myValue=200;
public void printValue() {
System.out.println("Child.printValue(),myValue="+myValue);
}
}
a) 左边的程序运行结果是什么?
b) 你如何解释会得到这样的输出?
当子类与父类拥有一样的方法,并且让一个父类变量引用一个子类对象时,到底调用哪个方法,由对象自己的“真实”类型所决定,这就是说:对象是子类型的,它就调用子类型的方法,是父类型的,它就调用父类型的方法。
c)计算机是不会出错的,之所以得到这样的运行结果也是有原因的,么从这些运行结果中,你能总结出 Java 的哪些语法特性?
如果子类与父类有相同的字段,则子类中的字段会代替或隐藏父类的字段,子类方法中访问的是子类中的字段(而不是父类中的字段)。
ParentChildTest.java的更多相关文章
- Java(多态)动手动脑
1> 请看以下"变态"的类(参看示例ParentChildTest.java) 上述代码的特点是: 子类和父类定义了一模一样的字段和方法 运行以下测试代码 1. 上边的程序运 ...
- Java的动手动脑(五)
日期:2018.11.1 星期四 博客期:021 Part1: 运行代码 class Grandparent { public Grandparent() { System.out.println(& ...
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- JAVA动手动脑多态
动手实验一:下列语句哪一个将引起编译错误?为什么?哪一个会引起运行时错误?为什么? m=d; d=m; d=(Dog)m; d=c; c=(Cat)m; 先进行自我判断,得出结论后,运行TestCas ...
- JAVA多态问题总结(课堂总结)
面向对象的三大特性:封装.继承.多态.从一定角度来看,封装和继承几乎都是为多态而准备的.这是我们最后一个概念,也是最重要的知识点.多态的定义:指允许不同类的对象对同一消息做出响应.即同一消息可以根据发 ...
- java中多态的使用
一.动手动脑 public class ParentChildTest { public static void main(String[] args) { Parent parent=new Par ...
- java课后思考问题(七)
1.继承条件下的构造方法调用 package parent;class Grandparent { public Grandparent() { System.out.println("Gr ...
- Java课堂 动手动脑6
一.下列语句哪一个将引起编译错误?为什么?哪一个会引起运行时错误?为什么? m=d;d=m;d=(Dog)m;d=c;c=(Cat)m; 先进行自我判断, 1.代码: class Mammal{} c ...
- java课后实验性问题6
1.继承条件下的构造方法调用. class Grandparent { public Grandparent(){ System.out.println("GrandParent Creat ...
随机推荐
- Jackson - Features for configuring Java-to-JSON mapping
Following on/off features are defined in SerializationConfig.Feature (for Jackson 1.x), or Serializa ...
- Linux 命令 - su: 以其他用户和组 ID 的身份来运行 shell
在 shell 会话状态下,使用 su 命令将允许你假定为另一个用户的身份,既可以以这个用户的 ID 来启动一个新的 shell 会话,也可以以这个用户的身份来发布一个命令. 命令格式 su [OPT ...
- 删除mssqlserver表数据,使id从0开始
********************************* 注意备份好数据! *************************** 1.删除表数据 delete 表名 2.执行 dbcc c ...
- Android之日历触屏测试
结构: 查看运行效果点这里 DiaryTest.apk下载 BaseCalendar: package com.cdp.Activity; import java.util.Calendar; imp ...
- 牛客_Java_值传递(拷贝)不该表原来变量+传引用的话会一起改变
总结: 许多编程语言都有2种方法将参数传递给方法------按值传递和按引用传递. 与其他语言不同,Java不允许程序员选择按值传递还是按引用传递各个参数,基本类型(byte--short--int ...
- vs2012如何创建报表
引自百度文库,介绍的比较详细 http://wenku.baidu.com/view/c405d5f48762caaedc33d405.html
- javascript 笔记——bind 用法小技巧
$(function(){ //代码阅读能力 function speak(name){ return "Hello " + name; } //此处写代码 //方法一 //重点是 ...
- eclipse中英文切换--四种方式
若转载,请注明出处 http://www.cnblogs.com/last_hunter/p/5627009.html 谢谢! ------------------------------------ ...
- Unix 进程通信基本概念
一:通信分为两类: 控制信息的传递: 低级通信 大批量数据的传递: 高级通信 二:基本的通信方式 (a)主从式通信: 通信的双方存在一种隶属关系, 其中主进程是通信过程的控制者,而从进程是通信过程的从 ...
- GC日志补充
根据日志,确实发生了FullGC,计算资源被耗光 Java HotSpot(TM) 64-Bit Server VM (24.79-b02) for windows-amd64 JRE (1.7.0_ ...