java 子类父类相互转换
子类转父类 (父类引用指向子类对象)
子类可以转换为父类,如下父类FruitTest与其子类AppleTest
class FruitTest {
String str = "FruitTest";
public String get() {return str;}
public void set(String str) {this.str = str;}
}
class AppleTest extends FruitTest {
String str = "AppleTest";
}
FruitTest obj = new AppleTest(); 是正确的
obj.str 结果为"FruitTest",不是子类中的str("AppleTest")。obj的属性变量都是父类的。
obj.get() 得到的是"FruitTest",执行的是父类中的方法,但若是子类重写了父类方法,执行的则是子类的方法
class AppleTest extends FruitTest {
String str = "AppleTest";
public String get() {return str;};
}
则obj.get()得到的是"AppleTest" 。
总结:子类可以转换为父类,即父类引用指向子类对象。引用的属性是父类的,方法若果被子类重写则是子类的方法。
父类转子类(子类引用指向父类对象)
父类不可以直接转换为子类,AppleTest obj = new FruitTest(); 是错误的。
AppleTest obj = (AppleTest) new FruitTest(); 编译时也会报错。
FruitTest obj = new AppleTest();
AppleTest test = (AppleTest)obj; 这两句是正确的。
父类若转换为子类,父类引用必须指向的是一个子类对象。实质上是将一个指向子类对象的父类引用改为了子类引用。
java 子类父类相互转换的更多相关文章
- Java 子类父类构造方法执行顺序
public class Test { class Super { int flag = 1; Super() { test(); } void test() { System.out.println ...
- Java拾遗(一):浅析Java子类和父类的实例化顺序 及 陷阱
本文主要介绍Java里经常使用的子类和父类的变量实例化顺序及陷阱,并结合一个Android实例来探讨此问题.日后编程中应尽量避免此陷阱. 首先看以下一段代码: 定义一个虚类Server.java pa ...
- Java 多态 父类和子类方法的访问控制权限
Java 多态 父类和子类方法的访问控制权限 @author ixenos 父类和子类方法的访问控制权限 继承是为了扩展类的功能,而这种扩展显然就是对一个原始类的扩展,目的还是向上转型来调用,所以这就 ...
- java 子类强转父类 父类强转子类
Java 继承 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为. Java 子类强转父类 父类引用指向子类对象: jav ...
- Java中父类强制转换为子类的可能
之前徒弟问了一个问题, 在Java中, 父类对象到底能不能转换成对应的子类对象? 到底能不能, 今天就来说说这个问题, 先看下面一段代码: package cn.com.hanbinit.test; ...
- Java子类和父类的初始化执行顺序
要明白子类和父类的初始化执行顺序,只需要知晓以下三点,就不会再弄错了. 1.创建子类对象时,子类和父类的静态块和构造方法的执行顺序为:父类静态块->子类静态块->父类构造器->子类构 ...
- java中父类的静态方法不能被重写
Java中父类的静态方法确实不能被重写的,但是有的人可能去做实验发现在子类中去重写父类static方法时,并没什么问题.这里我来具体解释下. public class Parent { public ...
- Java子类方法签名相同,返回类型不同
2019年7月27日15:04:20 Java子类覆盖父类的方法,方法名字相同,参数列表相同,返回类型不同的情况: 如果子类方法返回类型是父类方法返回类型的子类,这是没问题的,否则报错. 在JAVA ...
- c++子类父类关系(翁恺c++公开课[15-16]学习笔记)
关于类的继承有三种:public继承.private继承.protected继承 首先说明,关于类的成员变量.函数的权限有三种(public.private.protected) 我们通常会让所有的成 ...
随机推荐
- python 正则进阶
1.group 除了简单地判断是否匹配之外,正则表达式还有提取子串的强大功能.用()表示的就是要提取的分组(Group).比如:^(\d{3})-(\d{3,8})$分别定义了两个组,可以直接从匹配的 ...
- python 三方库
---------------- 这又是一个 Awesome XXX 系列的资源整理,由 vinta 发起和维护.内容包括:Web框架.网络爬虫.网络内容提取.模板引擎.数据库.数据可视化.图片处理. ...
- element.dataset API
不久之前我向大家展示了非常有用的classList API,它是一种HTML5里提供的原生的对页面元素的CSS类进行增.删改的接口,完全可以替代jQuery里的那些CSS类操作方法.而另外一个非常有用 ...
- 【转载】 pytorch自定义网络结构不进行参数初始化会怎样?
原文地址: https://blog.csdn.net/u011668104/article/details/81670544 ------------------------------------ ...
- CFG文件格式
大多数情况下,很多程序都要保存用户的设置,办法有很多:注册表,日志文件·..... 而很多程序都使用了一个专用的文件.为了方便起见,常常命名为*.cfg,有时甚至直接命名为Config.cfg. 这只 ...
- memoization
memoization 是指通过缓存函数返回结果来加速函数调用的一种技术.仅当函数是纯函数 时结果才可以被缓存,也就是说,函数不能有任何副作用或输出,也不能依赖任何全局状态 import math _ ...
- 洛谷P2568 GCD(线性筛法)
题目链接:传送门 题目: 题目描述 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对. 输入输出格式 输入格式: 一个整数N 输出格式: 答案 输入输出样例 ...
- 给Linux服务器设置共享文件目录
通过samba软件 :yum install samba 修改配置文件:vi /etc/samba/smb.conf 添加 [WORKSPACE] comment = workspace ...
- djangorestful framework (三)学习
十.分页器 -简单分页: -from rest_framework.pagination import PageNumberPagination -生成一个对象 -调用对象的.page.paginat ...
- (20)模型层 -ORM之msql 基于双下划线的跨表查询(一对一,一对多,多对多)
基于对象的跨表查询是子查询 基于双下划线的查询是连表查询 PS:基于双下划线的跨表查询 正向按字段,反向按表名小写 一对一 需求:查询lqz这个人的地址# 正向查询ret = models.Autho ...