[java] 转型
A为父类,子类B、C
第20行发生向上转型,a对象调用C覆写过的print()方法
若为A a = new B(); 则调用B覆写过的print()方法
创建对象时使用向上转型,能够统一参数类型(23行),便于程序设计
1 package inheritance;
2
3 class A{
4 public void print() {
5 System.out.println("A.pirnt");
6 }
7 }
8 class B extends A{
9 public void print() {
10 System.out.println("B.print");
11 }
12 }
13 class C extends A{
14 public void print() {
15 System.out.println("C.print");
16 }
17 }
18 public class TestDemo {
19 public static void main(String args[]) {
20 A a1 = new B();
21 A a2 = new C();
22 fun(a1);
23 fun(a2);
24 System.out.println(a1 instanceof A);
25 System.out.println(a1 instanceof B);
26 System.out.println(a1 instanceof C);
27 }
28 public static void fun(A a) {
29 a.print();
30 }
31 }
结果:
B.print
C.print
true
true
false
如果子类有自己的特殊方法,没有在父类中定义,则父类访问子类的方法需要将父类对象向下转型:B b = (B) a,但这样会破坏参数的统一性,所以在开发中不建议使用
原则:以父类方法为主,子类可以覆写父类方法,但尽量不要扩充新方法
[java] 转型的更多相关文章
- 我是如何从Java转型为Go区块链工程师
我是如何从Java转型为Go区块链工程师 本文来自于一个比原链核心开发的陈述 前言 IT部落在加入比原链之前一直是做Java开发的,当初看到Go还有点犹豫,还怕过不了面试,结果是否掌握一门语言的考量确 ...
- (转载)java多态(2)-------Java转型(向上或向下转型)
5.13.1 向上转型 我们在现实中常常这样说:这个人会唱歌.在这里,我们并不关心这个人是黑人还是白人,是成人还是小孩,也就是说我们更倾向于使用抽象概念“人”.再例如,麻雀是鸟类的一种(鸟类的子类), ...
- Java转型(向上转型和向下转型)
在Java编程中经常碰到类型转换,对象类型转换主要包括向上转型和向下转型. 5.13.1 向上转型 我们在现实中常常这样说:这个人会唱歌.在这里,我们并不关心这个人是黑人还是白人,是成人还是小孩,也就 ...
- BAT推荐免费下载JAVA转型大数据开发全链路教程(视频+源码)价值19880元
如今随着环境的改变,物联网.AI.大数据.人工智能等,是未来的大趋势,而大数据是这些基石,万物互联,机器学习都是大数据应用场景! 为什么要学习大数据?我们JAVA到底要不要转型大数据? 好比问一个程序 ...
- Java转型大数据开发全套教程,都在这儿!
众所周知,很多语言技术已经在长久的历史发展中掩埋,这期间不同的程序员也走出的自己的发展道路. 有的去了解新的发展趋势的语言,了解新的技术,利用自己原先的思维顺利改变自己的title. 比如我自己,也都 ...
- Java转型
集合转型 通过中间类型List List<String> strs=new ArrayList<>(); List list=(List)strs; List<Objec ...
- Java上转型和下转型
Java 转型问题其实并不复杂,只要记住一句话:父类引用指向子类对象. 什么叫父类引用指向子类对象,且听我慢慢道来. 从2个名词开始说起:向上转型(upcasting) .向下转型(downcasti ...
- Java中List转换为数组,数组转List
今天写代码遇到一个奇怪的问题,具体代码不贴出了,写一个简化的版本.如下: ArrayList<String> list=new ArrayList<String>(); ...
- 2018.1.7java转型
从昨天的组合和继承开始,我在分析二者的区别,到后面的向上转型,再到hashcode和equals还有==的区别,感觉基础还很不好,也许,目前应该从面向对象开始复习,把暂时笔试宝典放一下. 回忆一下今天 ...
随机推荐
- java面试一日一题:mysql事务是如何实现的
问题:请讲下mysql的事务是如何实现的 分析:该问题主要考察对事务的理解及实现方式: 回答要点: 主要从以下几点去考虑, 1.对事务的概念的理解? 2.事务的实现方式? 讲到mysql的事务,很快可 ...
- ON DUPLICATE KEY UPDATE作用
ON DUPLICATE KEY UPDATE作用 先声明一点,ON DUPLICATE KEY UPDATE为Mysql特有语法,这是个坑 语句的作用,当insert已经存在的记录时,执行Updat ...
- java面试-synchronized与lock有什么区别?
1.原始构成: synchronized是关键字,属于JVM层面,底层是由一对monitorenter和monitorexit指令实现的. ReentrantLock是一个具体类,是API层面的锁. ...
- ISP算法:深入聊聊lens shading
一.简介 关于什么是成像中的lens shading这里直接引用一句英文的definition:"The term shading describes the light fall-off ...
- ansible:playbook详解
Blog:博客园 个人 概述 playbook是由一个或者多个play组成的列表. 主要功能是将预定义的一组主机装扮成事先通过ansible中的task定义好的角色.task实际是调用ansible的 ...
- css详解background八大属性及其含义
background(背景) 以前笔者在css盒模型以及如何计算盒子的宽度一文中提到过盒模型可以看成由 元素外边距(margin).元素边框(border).元素内边距(padding)和元素内容(c ...
- Tomcat9配置HTTP/2
1 概述 Tomcat从Tomcat8的一些较新版本就支持HTTP/2了,Tomcat9直接支持,本文首先讲述了相关HTTP/2的特性,接着利用一个简单的开源工具mkcert生成证书并利用该证书配置H ...
- selenium启动IE失败,并报错:Unexpected error launching Internet Explorer. Protected Mode settings are not the same for all zones
1.selenium去启动IE时,报错: Started InternetExplorerDriver server (32-bit)2.50.0.0Listening on port 24641On ...
- poj_3617 解题
题意: 给定长度为N的字符串S,要构造一个长度为N的字符串T串. 从S的头部删除一个字符,加到T的尾部 从S的尾部删除一个字符,加到T的尾部 目标是构造字典序尽可能小的字符串. 示例输入: ACDBC ...
- fastjson反序列化漏洞实际案例利用
fastjson反序列化rce实际案例利用全过程: 存在问题网站:http://***.com/ 在网站上寻找一些安全漏洞的时候,发现一条json数据包 数据包如下: POST /*** HTTP/1 ...