对象的转型

面向对象三个最重要特征:封装、继承、多态
向上转型:将子类对象赋值给父类引用
向下转型:将父类对象赋值给子类引用(前提先向上)
//------Person.java
class Person {
	String name;
	int age;
	void introduce(){
		System.out.print("name="+name+",age="+age);
	}
}
//------Student.java
class Student extends Person{
	String addr;
	void introduce(){	//override:具有父子关系,函数名、参数列表、返回值均同
		super.introduce();
		System.out.print(",addr="+addr);
	}
}
//------Test.java向上转型
public class Test {
	public static void main(String[] args) {
		Student stu=new Student();
		Person per=stu;
		per.name="lyl";
		per.age=26;
//		per.addr="ncut";	error
//		引用能够调用哪些成员(变量和函数),取决于该引用的类型
		per.introduce();
//		引用实际调用的方法,取决于该引用所指向的对象	
	}
}
//结果:name=lyl,age=26,addr=null
//------Test.java向下转型
public class Test {
	public static void main(String[] args) {
		Person per=new Student();	//向上转型
		Student stu=(Student)per;	//必须加(Student)
		stu.name="lyl";
		stu.age=26;
		stu.addr="ncut";
		stu.introduce();
	}
}
//结果:name=lyl,age=26,addr=ncut
------/
Person person=new Person();
Student student=(Student)person;
直接向下转型,可编译过,但运行异常
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值