Java中的多态及类型转换

一、多态:对象的多种形态(继承是多态的实现基础)

父类Animal

package shuqi;

public class Animal{
//public int age=10;
//public String name;
public void eat(){
	System.out.println("动物可以吃东西");
}
//public Animal(){
//	System.out.println("Animal类执行了");
//	//age=20;
}
}

子类Dog

package shuqi;

public class Dog extends Animal {
	public int age=20;
	public void eat(){
		System.out.println("狗可以吃肉");
	}
	public void watchDoor(){
		System.out.println("狗可以看门");
	}

}

子类Cat

package shuqi;

public class Cat extends Animal {

}

测试类Initial

package shuqi;

public class Initial {
public static void main(String[] args) {
	Animal obj1=new Animal();
	Animal obj2=new Dog();
	Animal obj3=new Cat();
	obj1.eat(); //引用父类的eat方法
	obj2.eat(); //这个时候子类中的eat已经重写了,所以引用的是子类的eat方法
	obj3.eat(); //继承父类eat方法
//	Dog dog = new Dog();
//	Animal animal=dog;
//	Dog dog2=(Dog)animal;
//	if(animal instanceof Cat){
//		Cat cat=(Cat)animal;
//	}
//	else{
//		System.out.println("无法进行类型转化");
//	}
//	
	
	}
}


(1)引用多态
 父类的引用可以指向本类的对象 Animal obj1=new Animal();


 父类的引用可以指向子类的对象 Animal obj2=new Dog();
(2)方法多态
 
 创建本类对象时,调用的方法为本类方法
 创建子类对象时,调用的方法为子类重写的方法或者继承的方法
 子类中独有的方法不可以被父类的引用指向子类的对象所调用

二、多态的引用类型转换

(1)向上类型转换(隐式/自动类型转换),是小类型到大类型的转换
(2)向下类型转换(强制类型转换),是大类型到小类型的转换
(3)instanceof运算符,来解决引用对象的类型,避免类型转换的安全性问题。

package shuqi;

public class Initial {
public static void main(String[] args) {
//	Animal obj1=new Animal();
//	Animal obj2=new Dog();
//	Animal obj3=new Cat();
//	obj1.eat();
//	obj2.eat();
//	obj3.eat();
	Dog dog = new Dog();
	Animal animal=dog;
	Dog dog2=(Dog)animal;
	if(animal instanceof Cat){
		Cat cat=(Cat)animal;
	}
	else{
		System.out.println("无法进行类型转化");
	}
	
	
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值