Java:多态(向上转型)
先来看一段代码:
class BaseClass{ public int book = 6; public void base(){ System.out.println("父类的普通方法"); } public void test(){ System.out.println("父类被覆盖的方法"); } } public class SubClass extends BaseClass{ //重新定义一个book实例成员变量隐藏父类的book实例成员变量 public String book = "轻量级Java EE企业应用实战"; public void test(){ System.out.println("子类的覆盖父类的方法"); } public void sub(){ System.out.println("子类的普通方法"); } public static void main(String[] args) { //下面编译时类型和运行时类型完全一样,因此不存在多态 BaseClass bc = new BaseClass(); //输出6 System.out.println(bc.book); //下面两次调用将执行BaseClass的方法 bc.base(); bc.test(); //下面编译时类型和运行时类型完全一样,因此不存在多态 SubClass sc = new SubClass(); //输出"轻量级Java EE企业应用实战" System.out.println(sc.book); //下面调用将执行从父类继承到的base方法 sc.base(); //下面调用将执行当前类的test方法 sc.test(); //下面编译时类型和运行时类型不一样,多态发生 BaseClass ploymophicBc = new SubClass(); //输出6 ----- 表明访问的是父类的成员变量 System.out.println(ploymophicBc.book); //下面调用将执行父类继承到的base方法 ploymophicBc.base(); //下面调用将执行当前类的test方法 ploymophicBc.test(); } }
说明:
当把一个子类对象直接赋给父类的引用变量是,例如上面的BaseClass ploymophicBc = new SubClass();,这个ploymophicBC应用变量的编译时类型是BaseClass,而运行时类型是SubClass,当运行时调用该引用变量的方法,其行为总是表现出子类方法的行为特征,而不是父类方法的行为特征,这就可能出现:相同类型的变量,调用同一个方法时呈现出多种不同的行为特征,这就是多态。
Java:多态(向上转型)的更多相关文章
- java多态-向上转型和向下转型
向上转型:符合“is a”,是安全的,子类向上到父类,多余的属性和方法会丢弃 向下转型:不安全的,用instanceof提前判断一下,以免抛出异常 instanceof用法: result = obj ...
- java 多态 向上 向下转型
向上转型 将子类对象当作父类对象 子类对象------>父类对象 先实例化子类 父类 父类对象 = 子类实例 package test2; class Father{ public vo ...
- JAVA对象 向上转型upcasting,向下转型downcasting
1:向上转型 向上转型,就是java多态中的父类引用指向子类对象.但要注意的是 父类引用不可以访问子类新增加的成员(属性和方法) 代码举例: /** * 定义一个父类 */ public class ...
- java的向上转型总结
在<think of java>中对'向上转型'有着如下的描述 看完之后很蒙圈,所以自己在网上找了一些描述,并自己做了简单的总结 简单的例子 class A{ public void A1 ...
- JavaSE(五)JAVA对象向上转型和向下转型
今天做了一个测试的题目,发现自己还是很多问题没有静下心来做.很多问题是可以自己解决的但是自己一是没有读清题意,二是自己心里太急躁了.所以这个要自己应以为鉴! 对象的转型问题其实并不复杂,我们记住一句话 ...
- JAVA的向上转型和向下转型怎么理解呢?
在定义中是子类向父类转型称为向上转型,父类向子类转型是向下转型(必须先向上转型过,才能向下转型), 但是在下面类定义后,我得到的结果却不同.求大佬解惑 class superclass{ public ...
- java之 向上转型与向下转型
向上转型 class father { public void eat(){ System.out.println("father eat()"); } } class son e ...
- java 多态 向上造型
最近在读java 编程思想,在读多态一章时,遇到了一个问题,在此记录一下. 1 package main.demo; 2 3 class Super{ 4 public int filed =0; 5 ...
- Java多态、向上转型、向下转型知识分享(讲解全面)
多态(方法的多态.对象的多态) 方法的多态 重写的多态(重要):子类继承父类,因此子类拥有父类属性和方法,如果子类重写父类方法,那么父类调用该方法的时候就会检查子类是否重写该方法,子类重写了就调用子类 ...
- Java面向对象之多态(向上、向下转型) 入门实例
一.基础概念 多态: 重点是对象的多态性.某一事物的多种体现形态. 多态的作用: 1.提高了代码的扩展性,后期出现的功能,可以被之前的程序所执行. 2.不能使用子类特有的功能.只能使用覆盖父类的功能. ...
随机推荐
- 学习taobao框架
参考:https://github.com/xulingbo/xulingbo.github.io/issues http://blog.csdn.net/hguisu/article/details ...
- 【python】遍历类的所有成员
# -*- coding: utf-8 -*- #sharejs.com提供代码,转载请注明出处 class Site(object): def __init__(self): self.title ...
- 08void
void void修饰函数返回值和参数 如果函数没有返回值,那么应给将其声明为void 如果函数没有参数,应该声明其参数为void 不存在void类型的变量 void指针的意义 C语言规定只有相同类型 ...
- Linux:删除程序
首先查看程序是否安装,以mariadb 为例 卸载程序 .........
- log4net 配置
1.是直接在代码中通过调用XmlConfigurator.Configure()来解析配置文件,配置日志环境. log4net.Config.XmlConfigurator.Configure(); ...
- mysql-5.7.13-win32 安装
*:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...
- QQ右下角浮动窗口
<html><head><meta http-equiv="Content-Type" content="text/html; charse ...
- Heka 的编译 和 Heka 插件的编译
相关英文文档在: https://hekad.readthedocs.io/en/latest/installing.html 所有系统都必须的如下: Prerequisites (all syste ...
- win7、linux安装使用pip、mitmproxy
安装pip https://pip.pypa.io/en/latest/installing.html 步骤: 下载 https://bootstrap.pypa.io/get-pip.py pyth ...
- windows下CMake使用图文手册 Part 2
例子2:有目录的项目 我现在有个文件夹ProjectDate,有如下文件结构 E:. │ CMakeLists.txt │ ├─include │ Date.h │ └─src ...