java中转型的概念

转型

上溯造型,即向上转型(Upcasting)是指子类转换为父类,这是自动转换;转换的前提是具有继承或实现关系。向上转型损失了子类新扩展的属性和方法,仅可以使用从父类中继承的属性和方法。
下溯造型,即向下转型(Downcasting)称之为强制转换,是将父类对象显式的转换成子类类型。曾经向上转换过的对象,才能再向下转换。对象不允许不经过上溯造型而直接下溯造型。

1、上溯造型,创建子类对象,赋值给父类类型的对象
2、下溯造型必须是曾经上溯过的对象才能下溯转回子类类型

public class Test_38_向上转型 {
	public static void main(String[] args) {
		// 上溯造型,创建子类对象,赋值给父类类型的对象
		Person_38 p = new Student_38();
//		p.study();//不能调用子类自己的方法
		p.sayHello();// 可以调用父类声明过的方法:这里发生了方法覆盖

		// 2、下溯造型必须是曾经上溯过的对象才能下溯转回子类类型
		Person_38 p2 = new Person_38();
//		Student_38 s2=(Student_38)p2;//执行时出错
		Student_38 s = (Student_38) p;// 上溯后的p
		s.study();
		
		//3、instanceof 运算符
		if( s instanceof Person_38) {//s子类是继承父类的,也算父类类型
			System.out.println("s 是Person_38类型的");
		}
		if( s instanceof Student_38) {
			System.out.println("s 是Student_38类型的");
		}
		if( p instanceof Person_38) {
			System.out.println("s 是Person_38类型的");
		}
		if( p instanceof Student_38) {
			System.out.println("s 是Student_38类型的");
		}
	}
}

class Person_38 {
	public void sayHello() {
		System.out.println("hello");
	}
}

class Student_38 extends Person_38 {
	public void sayHello() {// 覆盖了父类的sayHello方法
		System.out.println("hello, I'm stu");
	}

	public void study() {
		System.out.println("I can study");
	}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值