对象的上转型和下转型 (instanceof关键字)
1.对象的上转型,就是多态的一种写法
格式:父类名称 对象名 = new 子类名称();
Animal animal = new Cat();
含义:右侧创建一个子类对象,把它当作父类来使用
向上转型一定是安全的,从小范围到大范围; 猫是动物,动物不一定是猫
类似于:double num = 100
ps:对象一旦向上转型为父类,就无法调用子类特定内容
上转型还可以在参数传递的时候隐型发生:例如 匿名类、子类对象
usbServe(USB usb)
调用时:
1.usbServe(new Keybroad());
2. Keybroad keybroad = new Keybroad();
usbServe(keybroad);
2.对象的下转型,其实就是还原的操作
格式:子类名称 对象名 = (子类名称)父类对象;
含义:将父类对象还原为本来的子类对象
Cat cat = (Cat)animal
类似于:int num = (int)10.0
ps:必须保证创建的时候就是猫,才能下转型成猫,否则会报错 类转换错误 ClassCastException
报错的情况类似于:int num = (int)10.5 //精度损失
下转型时,忘记原来子类是什么时
格式:对象 instanceof 类名称
会得到一个 boolean 值,判断前面对象能不能当作后面类型的实例
例子:
if (animal instanceof Dog) {
Dog dog = (Dog) animal;
dog.watchHouse();
}
if (animal instanceof Cat) {
Cat cat = (Cat) animal;
cat.catchMouse();
}
对象的上转型和下转型 (instanceof关键字)的更多相关文章
- java上转型和下转型(对象的多态性)
		
/*上转型和下转型(对象的多态性) *上转型:是子类对象由父类引用,格式:parent p=new son *也就是说,想要上转型的前提必须是有继承关系的两个类. *在调用方法的时候,上转型对象只能调 ...
 - Java学习——上转型与下转型对象
		
上转型:重写父类方法才调用子类方法,其他仍用父类的,包括被子类隐藏的父类成员变量,而且不能调用子类新增的成员变量和成员方法. 下转型:只能是转上去的才能转下去.下转型类似于该子类直接继承父类. pac ...
 - Java上转型和下转型
		
Java 转型问题其实并不复杂,只要记住一句话:父类引用指向子类对象. 什么叫父类引用指向子类对象,且听我慢慢道来. 从2个名词开始说起:向上转型(upcasting) .向下转型(downcasti ...
 - java 向上转型 向下转型
		
//父类 四边形 class Quadrangle{ public static void draw (Quadrangle q){ } } //子类 public class Parallelog ...
 - java基础(十)之向上转型/向下转型
		
向上转型:将子类的对象赋值给父类的引用. 向下转型:将父类的对象赋值给子类的引用. 向上转型 Student a = new Student(); Person zhang = a; 或者 Perso ...
 - JavaSE(五)JAVA对象向上转型和向下转型
		
今天做了一个测试的题目,发现自己还是很多问题没有静下心来做.很多问题是可以自己解决的但是自己一是没有读清题意,二是自己心里太急躁了.所以这个要自己应以为鉴! 对象的转型问题其实并不复杂,我们记住一句话 ...
 - JAVA对象 向上转型upcasting,向下转型downcasting
		
1:向上转型 向上转型,就是java多态中的父类引用指向子类对象.但要注意的是 父类引用不可以访问子类新增加的成员(属性和方法) 代码举例: /** * 定义一个父类 */ public class ...
 - java 向上转型与向下转型
		
转型是在继承的基础上而言的,继承是面向对象语言中,代码复用的一种机制,通过继承,子类可以复用父类的功能,如果父类不能满足当前子类的需求,则子类可以重写父类中的方法来加以扩展. 向上转型:子类引用的对象 ...
 - 【JAVA】关于向上转型与向下转型
		
向上转型: 子类引用的对象转换为父类类型称为向上转型.通俗地说就是是将子类对象转为父类对象.此处父类对象可以是接口 如果子类重写了父类的方法,就根据这个引用指向调用子类重写的这个方法,不是调用父类的, ...
 
随机推荐
- 页面回显与URL模板映射
			
一.页面回显 对于需要返回界面的数据,可以将后台封装好的数据回显至原始jsp界面中. 举个例子: User.java package com.zk.data; public class User { ...
 - 素问 - 使用 PE、PB 做估值
			
摘自<小韭的学习圈> Q 哪些行业用PE看合适,哪些用PB看合适啊?其中的大致逻辑是什么? A PE = 股价 / 每股收益 使用PE的逻辑是,我们认为一个股票有价值,是因为公司未来能赚钱 ...
 - C语言-const和volatile深度分析
			
1.const只读变量 const修饰的变量是只读的.本质还是变量 const修饰的局部变量在栈上分配空间 const修饰的全局变量在全局数据区分配空间 const只在编译期有用,在运行期无用 con ...
 - js 简单粗暴深拷贝
			
var obj = {} var newObj = JSON.parse(JSON.stringify(obj))
 - 软件工程 实验一 Git版本管理
			
实验目的: 1)了解分布式分布式版本控制系统的核心机理: 2) 熟练掌握git的基本指令和分支管理指令: 实验内容: 1)安装git 2)初始配置git ,git init git status指 ...
 - java基础之  类型转换
			
一.自动类型转换 1.java中不同类型的数据在计算时,为保证数据的精度,数据的类型会以大容量的类型为主: 2.自动类型转换的排序: char.byte.short -> int -> l ...
 - 关于jquery ajax不执行success回调函数
			
检查error函数是否执行,发现错误信息为parseerror,表示jquery解析返回结果时失败,只需要将ajax参数dataType:"json"改为"text js ...
 - Oracle存储过程----存储过程执行简单的增删改查
			
1.存储过程执行增加的sql create or replace procedure test_add(id varchar,name varchar,time varchar,age varchar ...
 - 手机chrome书签文件导出教程
			
重大发现!!!本人亲自测试可以导出chrome书签文件登录下面的链接https://takeout.google.com/settings/takeout/custom/chrome?pli=1
 - SFSA
			
#include<stdio.h> #include<string.h> #include<math.h> #include<iostream> #in ...