对象转型

本文详细解析了对象转型(casting)的概念,包括向上转型(upcasting)和向下转型(downcasting),并介绍了如何使用instanceof关键字判断对象类型。通过具体实例,阐述了基类引用与子类对象之间的关系及访问限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对象转型(casting):

1:一个基类的引用类型变量可以“指向”其子类的对象。
2:一个基类的引用不可以访问其子类对象新增加的成员(属性和方法)。
3:可以使用 引用 变量instanceof类名 来判断该引用型变量所“指向”的对象是否属于该类或该类的子类。
4:子类的对象可以当做基类的对象来使用乘坐向上转型(upcasting),反之称为向下转型(downcasting)

实例:

class	Animal{
	public	String	name;
	Animal (String	name){
		this.name = name;
	}
}

class	Cat	extends	Animal{
	public	String	furColor;
	Dog(String n, String  c) {
		super (n);
		furColor = c; 
	}
}

public	class	Test{
	public	static	void	main(String [] args){
		Animal	a = new	Animal ("name");		//
		Cat	c = new	Cat ("catname","blue");
		Dog	d = new	Dog("dogname" , "black");
	
		System.out.println(a 	instanceof	Animal);		//true
		System.out.println(c 	instanceof	Animal);		//true
		System.out.println(d 	instanceof	Animal);		//true
		System.out.println(a 	instanceof	Cat);		//false

		a = new	Dog("bigyellow" , "yellow")		//a是父类的引用,但是指向子类(Dog)
		System.out.println(a.name);		//bigyellow	
		System.out.println( a.furname );		//无法打印
		System.out.println(a	instanceof	Animal );		//true
		System.out.println(a	instanceof	Dog);		//true

		Dog		d1 = (Dog)a;		//要加强制转换符,这样d1就指向了子类(Dog)。但是Dog无法强制转换为Cat
		System.out.println(d1.furColor);		//yellow
	}
}

实例二:

public	class	Test {
	public	static	void	main(String [] args){	
		Test	test = new	Test();
		Animal	a = new	Cat("name");
		Cat	c = new	Cat ("catname" , "black");
		Dog	d = new	Dog("dogname" , "black");
		test.f(a) ;
		test.f(b) ;
		test.f(d) ;
	}
	public	void	f(Animal	a){		
		System.out.println ("name:"+a.name);
		if (a	instanceof	Cat){		//判断,是猫,则强制转换为猫。
			Cat	cat = (Cat)a;
			System.out.println("  "+cat.eyeColor+"eyes");
		}else	if(a	   instanceof	Dog){
			Dog	dog = (Dog)a;
			System.out.println("  "+dog.furColor+" fur ")
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值