多态

概念

父类引用指向子类对象,从而产生多种形态。
Animal animal=new Dog();
父类引用-------------子类对象
当两者存在直接或者间接的继承关系时,就形成了多态。父类引用能访问父类所声明的属性和方法,不能访问子类独有的属性和方法。

package Polymorphism;

public class Animal {
public String name;

}
class Dog extends Animal{
	public String furColor;
};
class HaShiQi extends Dog{
	public int age;
};


package Polymorphism;
/**
 * 
 * @author lingking
 *     父类的引用指向子类的对象
 *     
 *     向上转型:
 *     1 由子类类型转型为父类类型
 *     2 肯定会成功,是一个隐式转换
 *     3 向上转型的对象将只能访问父类中共有的成员,不能访问子类中独有的成员
 *     向下转型:
 *     1 由父类类型转型为子类类型
 *     2 向下转型,存在失败的可能性,需要进行强制类型转换,是一个显式转换
 *     3 如果失败了,会出现ClassCastException 异常
 *     4 向下转型后的对象,将可以访问子类中的独有成员
 */    
public class Program {
public static void main(String[] args) {
	Dog dog=new Dog();
	dog.name=" ";
	dog.furColor=" ";
	
	//向上转型
	Animal animal=dog;
	animal.name="  ";
	
	//向下转型
	HaShiQi haHhiqi=(HaShiQi)dog;//强制类型转换
}
}

下面接入一个实例

package Polymorphism;

public class program1 {
//需求:
//某动物园刚刚开业,需要录入动物信息
//录入的信息,包含动物的名字,年龄;如果是老虎,还需要额外的录入老虎的性别
//所谓的“录入系统”操作,简化为控制台输出
public static void main(String[] args) {
//向上转型,输出每一个动物的姓名和年龄
	load(new Dog());
	load(new Monkey());
	load(new Elephent());
	load(new Tiger());

	
	
}	

//子类的共有属性为name与age
//load方法输出对象属性
public static void load(Animal animal) {
	System.out.println(animal.name+animal.age);
	//针对老虎做特殊处理
	// instance of 关键字,因为在向下转型的过程中,,如果引用实际指向的对象,不是要转型的类型,此时强制转换,会出现ClassCastException异常。
	// 所以,在向下转型之前,最好使用instance of关键字进行类型检查
		if(animal instanceof Tiger) {
			//向下转型
			Tiger tiger=(Tiger)animal;
			//输出老虎的性别
			System.out.println("老虎的性别"+tiger.gender);
		}
}
}
class Animal{
	String name;
	int age;
}
class Monkey extends Animal{}
class Dog extends Animal{}
class Elephent extends Animal{}
class Tiger extends Animal{
	String gender;
}

需要对多个对象进行同样的处理,把这几个对象当作父类类型进行集中的处理,采用向上或者向下转型。

多态中的方法重写:当向上转型后的对象,调用父类中的方法。如果这个方法已经被子类重写了,此时调用的就是子类的重写实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值