Java子类强制转父类类型不会变
class A{
void a(){
System.out.println("parent'a()");
}
}
class AA extends A{
void a(){
System.out.println("child'a()");
}
}
public static void main(String[] agrs){
AA aa = new AA();
aa.a();
A a = (A)aa;
a.a();
}
这两种打印出来的结果都是一样的,怎么才能调用A中的a方法,在不改变 A 和AA的方法的情况下。
answer:
子类调用父类中被重写的方法,用super.被重写的方法()即可!
|
这个是java和c++一个很重要的区别,在c++中,可以通过这样向上提升的类型操作实现对父类行为的调用,而在Java中,无论对其进行什么样的类型转换,其类型实际上是不变的。
举个简单的例子,C++中 C/C++ code
输出的结果是 Class A 说明通过类型提升b对象类型已经变成A类型。因此调用A中的行为,自然显现的是A的行为。 但是这个在java中确实相反,请看以下代码: Java code
执行该代码 结果 Class Agg 由此可将,无论将Java中的对象如何进行类型提升,依然保持其原有的类型。 今天也是碰到这问题好好总结了一下,希望能够对看到的人有所帮助。 |
||||
|
|
Java子类强制转父类类型不会变的更多相关文章
- java 子类强转父类 父类强转子类
Java 继承 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为. Java 子类强转父类 父类引用指向子类对象: jav ...
- Java子类初始化调用父类无参构造
实在是服了自己,子类初始化调用父类无参构造这种初学者都应该知道的事,我给忘了. 记得当初看书的时候各种概念抄在笔记本上,再上机实践,以为一辈子都不会忘,还是给忘了. 这件事说明了两个问题: 1.我没有 ...
- java 子类不能继承父类的static方法
先来看一段代码 /** * Created by bjchengpeng on 2018/7/19. */ /**运行结果 * woof * woofaa * * woof * Basenjiaa * ...
- java类继承总结一 父类类型与子类类型之间的转化问题(转)
java类继承总结一 父类类型与子类类型之间的转化问题 本文将通过一个实例描述父类类型与子类类型之间的转化问题,这个很特殊的问题常常会导致一些潜在的危险,让你整整一个晚上都在调试程序以解决一个让人抓狂 ...
- (转载) Java子类与父类之间的对象转换
在使用Java的多态机制时,常常使用的一个特性便是子类和父类之间的对象转换.从子类向父类的转换称为向上转换(upcasting),通过向上转换,我们能够在编写程序时采用通用程序设计的思想,在需要使用子 ...
- Java子类与父类之间的类型转换
1.向上转换 父类的引用变量指向子类变量时,子类对象向父类对象向上转换.从子类向父类的转换不需要什么限制,只需直接蒋子类实例赋值给父类变量即可,这也是Java中多态的实现机制. 2.向下转换 在父类变 ...
- Java多态性详解 (父类引用子类对象)
面向对象编程有三个特征,即封装.继承和多态. 封装隐藏了类的内部实现机制,从而可以在不影响使用者的前提下改变类的内部结构,同时保护了数据. 继承是为了重用父类代码,同时为实现多态性作准备.那么什么是多 ...
- Java多态性详解——父类引用子类对象
来源:http://blog.csdn.net/hikvision_java_gyh/article/details/8957456 面向对象编程有三个特征,即封装.继承和多态. 封装隐藏了类的内部实 ...
- Java特性之多态父类与子类之间的调用
问题描述: Java三大特性,封装.继承.多态,一直没搞懂其中多态是什么,最近研究了一下,关于父类和子类之间的调用.下面是一个测试类,源代码如下: package com.test; public c ...
随机推荐
- pocket
Pocket是一个离线阅读服务软件. Pocket的主要功能就是将你要阅读或者一时没有读完的网页标记下来,接着同步到服务器端,然后你就可以在不同的设备上阅读.如果你在电脑上网的时间不多,一些东西又来不 ...
- [LintCode] 最后一个单词的长度
class Solution { public: /** * @param s A string * @return the length of last word */ int lengthOfLa ...
- SpringCloud落地实践
这几年微服务架构越来越火.伴随着微服务概念的提示,越来越多的组织为了方便开发,结合实际提供很多微服务机构, 之前工作中一直使用dubbo作为微服务框架, dubbo只是专注于服务之间的通讯,所以更灵活 ...
- Ad Exchange
品友互动-基于大数据技术的人工智能决策平台 http://www.ipinyou.com.cn/about?flag=milestones
- work_log
机房搬迁 1. 虚拟机-à实体机 2. ldap 服务器 3. 考勤数据服务器 4. glpi 权限管理. 5. 备份脚本. 6. 试验jira重新启动. Luke--- 1,报价文档,相关技术者,技 ...
- python基础之类的继承与派生、组合、接口与归一化设计、抽象类、子类中调用父类方法
一.什么是继承 继承是一种创建新的类的方式,新建的类可以继承自一个或者多个父类,原始类称为基类或超类,新建的类称为派生类或子类. 派生:子类继承了父类的属性,然后衍生出自己新的属性,如果子类衍生出的新 ...
- 总结学习! xml与java对象转换 --- JDK自带的JAXB(Java Architecture for XML Binding)
JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术.该过程中,JAXB也提供了将XML实例文档反向 ...
- Python时间获取详解,Django获取时间详解,模板中获取时间详解(navie时间和aware时间)
1.Python获取到的时间 import pytz from datetime import datetime now = datetime.now() # 这个时间为navie时间(自己不知道自己 ...
- (4.8)SET ANSI_NULLS ON、SET QUOTED_IDENTIFIER ON
T-SQL支持在与空值进行比较时,允许比较运算符返回 TRUE 或 FALSE. 通过设置 ANSI_NULLS OFF 可将此选项激活.当 ANSI_NULLS 为 OFF 时,如果 ColumnA ...
- Linux环境安装nodejs
安装node 去官网下载nodejs 根据下载的文件可以看出它的压缩方式是.xz的方式,所以不能直接使用linux命令tar直接下载. xz -d node-v10.6.0-linux-x64.tar ...