Java面向对象高级特性-向上转型or向上转型

涎涎原创约 661 字大约 2 分钟...JavaJava

200-Java面向对象高级特性-向上转型or向上转型.mdopen in new window

注意

本博文仅供学术研究和交流参考,严禁将其用于商业用途。如因违规使用产生的任何法律问题,使用者需自行负责。

概念

示例代码

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