Java面向对象高级特性-向上转型or向上转型
原创约 661 字大约 2 分钟...
200-Java面向对象高级特性-向上转型or向上转型.md
注意
本博文仅供学术研究和交流参考,严禁将其用于商业用途。如因违规使用产生的任何法律问题,使用者需自行负责。
概念




示例代码
package com.tencent.chapter07.引用类型转换;
/**
* <p>Title: InstanceOf运算符</p>
* <p>
* Description:
* A instanceof B :判断A是否为B的类型
* </p>
* @author xianxian
* @date 2023年1月5日
*/
public class InstanceOf运算符 {
public static void main(String[] args) {
SuperMan ironMan = new SuperMan();
System.out.println(ironMan instanceof SuperMan);//true
System.out.println(ironMan instanceof Man); //true
//System.out.println(ironMan instanceof NormalMan);//false
getType("abc");
getType(123);
getType(true);
}
public static void getType(Object obj)
{
if(obj instanceof String)
{
System.out.println(obj + "是一个String类型");
}
else if(obj instanceof Integer)
{
System.out.println(obj + "是一个Integer类型");
}
else if(obj instanceof Boolean)
{
System.out.println(obj + "是一个Boolean类型");
}
}
}
package com.tencent.chapter07.引用类型转换;
/**
* <p>Title: Man</p>
* <p>
* Description:
//人类
* </p>
* @author xianxian
* @date 2023年1月4日
*/
public class Man {
//属性
String name;
String sex;
//行为
public void say()
{
System.out.println("人: 说话");
}
public void walk()
{
System.out.println("人: 走路");
}
}
package com.tencent.chapter07.引用类型转换;
//普通人
public class NormalMan extends Man {
}
package com.tencent.chapter07.引用类型转换;
//超人
public class SuperMan extends Man{
//行为
public void fly()
{
System.out.println("超人:飞");
}
}
package com.tencent.chapter07.引用类型转换;
public class Test {
public static void main(String[] args) {
/**
* 上溯造型:子类 -> 父类,自动转换
*
* 前提:基于继承关系
*
* 注意:转换过程中,会失去子类原有的属性与方法,仅能使用父类的属性与方法
*/
//子类 -- 钢铁侠
SuperMan ironMan = new SuperMan();
ironMan.fly();
//子类 -> 父类 ---- 普通人
Man man = ironMan;
//man.fly();
man.say();
/**
* 下溯造型:父类 -> 子类,强制转换
*
* 前提:基于继承关系
*
* 注意:曾经向上转换过的对象,才能再向下转换。对象不允许不经过上溯造型而直接下溯造型。
*/
//父类 -> 子类
SuperMan ironMan2 = (SuperMan)man;
ironMan2.fly();
/*
* 对象不允许不经过上溯造型而直接下溯造型:
*
* java.lang.ClassCastException: Man cannot be cast to SuperMan
*/
//父类
Man laowang = new Man();
laowang.walk();
//父类 -> 子类
SuperMan spiderMan = (SuperMan)laowang;
spiderMan.fly();
/*
* 子类与子类之间不允许相互转换
*/
//子类
NormalMan normalMan = new NormalMan();
//子类
//SuperMan antMan = (SuperMan)normalMan;
}
}
分割线
相关信息
以上就是我关于 Java面向对象高级特性-向上转型or向上转型 知识点的整理与总结的全部内容,希望对你有帮助。。。。。。。
Powered by Waline v2.15.4