java 多态 向上 向下转型
向上转型 将子类对象当作父类对象 子类对象------>父类对象
先实例化子类
父类 父类对象 = 子类实例
package test2;
class Father{
public void fun1(){
System.out.println("A---------fun 1");
}
public void fun2(){
this.fun1();;
}
}
class Sun extends Father{
public void fun1(){
System.out.println("B---------fun 1");
}
public void fun3(){
System.out.println("B---------fun 3");
}
}
public class PolDemo02 {
public static void main(String args[]){
Sun b = new Sun(); //实例化子类 b
Father a= b; //父类 父类对象= 子类
a.fun1(); //父类对象调用是险
} //发生了向上转型,则一定调用的是被子类覆写的对象,同时 此时的a对象是无法调用fun3()的因为
//此方法只在子类中,所以要调用fun3(),肯定要实例化子类,所以,可以将对象向下转型。
}
向下转型
将父类对象当做子类对象 子类 子类对象 = (子类)父类实例。
package test2;
class Father{
public void fun1(){
System.out.println("A---------fun 1");
}
public void fun2(){
this.fun1();;
}
}
class Sun extends Father{
public void fun1(){
System.out.println("B---------fun 1");
}
public void fun3(){
System.out.println("B---------fun 3");
}
}
public class PolDemo02 {
public static void main(String args[]){
Father a = new Sun(); //此时 先由new 一个子对象,然后由A a = new b()发生向上转型, 子类--------> 父类
Sun b = (Sun)a; // 子类 子类对象 = (子类)父类对象 父类---------->子类 此时发生了向下转型关系
b.fun1(); //父类类型调用fun1()此时 调用的方法是发生覆写过的
b.fun2(); //调用父类方法
b.fun3(); //调用子类自己定义的方法
}
}

在进行对象的向下转型之间,必须先发生向上转型,
父类用其自己实例化自己的对象,但是他并不知道谁是自己的子类,,所以再发生向下转型时,需要先发生向上转型 ,及A a = New B() ,将父类和子类之间建立关系。
java 多态 向上 向下转型的更多相关文章
- Java多态之向下转型
目录 Java多态之向下转型 强制类型转换 instanceof Java多态之向下转型 往期回顾:我们学习了向上转型和动态绑定的概念,可以知道在继承关系中,将一个子类对象赋值给父类的引用变量,调用父 ...
- 重写 final关键字 多态调用子类特有的属性及行为(向上向下转型)
1.override 重写:在继承中,子类与父类方法名相同,参数列表相同,的方法叫重写,与返回值有关; 主要应用于系统升级. 2.final 关键字: 可修饰:1.类-->被修饰后该类不能被继 ...
- Object类 任何类都是object类的子类 用object对象接收数组 object类的向上向下转型
任何类都是object类的子类 用object对象接收数组 object类的向上向下转型
- java多态-向上转型和向下转型
向上转型:符合“is a”,是安全的,子类向上到父类,多余的属性和方法会丢弃 向下转型:不安全的,用instanceof提前判断一下,以免抛出异常 instanceof用法: result = obj ...
- java基础值向上向下转型
1.父类引用可以指向子类对象,子类引用不能指向父类对象. 2.向上转型:子类引用的对象转换为父类类型称为向上转型,把子类对象直接赋给父类引用叫upcasting,向上转型不用强制转型(类似于低精度赋给 ...
- java中的向下转型
1.父类对象可以强制转换为子类对象,但是前提是此父类对象为子类对象实例化的结果. e.g. Fruit fruit=new Apple(); Apple a=(Apple)fruit;//ok e.g ...
- java 多态 向上造型
最近在读java 编程思想,在读多态一章时,遇到了一个问题,在此记录一下. 1 package main.demo; 2 3 class Super{ 4 public int filed =0; 5 ...
- java中downcast向下转型到底有什么用
What is the point of downcast? 当一个方法只有子类才有,马克-to-win:不是说基类和子类都有,开始时又是基类指针指向派生类,这时就需要downcast, see th ...
- 多态Poly中的向上/下转型 Upcast/Downcast
[参考资料]马克-to-win java中多态polymorphism,向上转型和动态方法调度有什么用? java中什么叫多态,动态方法调度(dynamic method dispatch)? jav ...
随机推荐
- Vue+koa2开发一款全栈小程序(7.图书录入功能)
1.图书录入功能 1.获取图书信息 1.在mydemo/src/until.js中封装工具函数post和get // 工具函数 import config from './config' // htt ...
- C# 执行DOS命令和批处理
在项目开发中,有时候要处理一些文件,比如视频格式的转换,如果用C开发一套算法,再用C#调用,未免得不偿失!有时候调用现有的程序反而更加方便.今天就来说一下C#中如何调用外部程序,执行一些特殊任务. 这 ...
- L1-023 输出GPLT (20 分)
L1-023 输出GPLT (20 分) 给定一个长度不超过10000的.仅由英文字母构成的字符串.请将字符重新调整顺序,按GPLTGPLT....这样的顺序输出,并忽略其它字符.当然,四种字符(不区 ...
- Python生成器,迭代器,可迭代对象
在了解Python的数据结构时,容器(container).可迭代对象(iterable).迭代器(iterator).生成器(generator).列表/集合/字典推导式(list,set,dict ...
- Scrapy 入门
Scrapy https://docs.scrapy.org/en/latest/intro/overview.html Scrapy is an application framework for ...
- C# mvc 前端调用 redis 缓存的信息
新手 这几天网上学习下redis ,自己总结下过程,怕之后忘记了,基本会用最简单的,有的还是不懂,先记下来,自己摸索的. 没有安装redis的先安装,教程:http://www.cnblogs.com ...
- Codeforces Round #527 (Div. 3) . F Tree with Maximum Cost
题目链接 题意:给你一棵树,让你找一个顶点iii,使得这个点的∑dis(i,j)∗a[j]\sum dis(i,j)*a[j]∑dis(i,j)∗a[j]最大.dis(i,j)dis(i,j)dis( ...
- Spring基础4
一.Spring的JDBC模板 Spring对持久层也提供了解决方案,ORM模块和JDBC模板 提高简化JDBC或Hibernate的模板 二.JDBC模板使用入门 1)引入jar包:Spring开发 ...
- IKanalyzer分词器分词并且统计词频
<dependency> <groupId>com.janeluo</groupId> <artifactId>ikanalyzer</artif ...
- Django之Model
一.字段 常用字段: AutoField:int自增列,必须填入参数 primary_key=True.当model中如果没有自增列,则自动会创建一个列名为id的列. IntergerField:一个 ...