java 多态特性

java 多态特性
一。对象的多态特性
1.引用多态
   父类的引用可以指向本类的对象
   父类的引用可以指向子类的对象
2.方法多态
创建本类对象时,调用本类的方法
创建子类对象时,调用的方法为子类的重写方法或者继承的方法(不能调用子类独有的方法)
public class Animal {
     public void eat() {
	System.out.println("动物具有吃的能力");
   }
}
public class Dog extends Animal {
	public void eat() {
		System.out.println("狗吃肉");
	}
    public void watchDoor() {
		System.out.println("狗看门");
	}
}
package DuoTai;

public class Cat extends Animal {

}


public class Initial {

	public static void main(String[] args) {
		Animal obj1 = new Animal();
		Animal obj2 = new Dog();
		//Dog obj3 = new Animal() ; 错误:子类的引用不能指向父类的对象    
           obj1.eat();
           obj2.eat();
           //obj2.watchDoor(); 错误:不能调用子类独有的方法
	}

}
输出结果:

二。引用类型转换
向上类型转化(隐式/自动)无风险
下类型转换                       有风险
利用 instanceof 运算符来避免运算符转换的安全性问题
public class Initial {

	public static void main(String[] args) {
		/*Animal obj1 = new Animal();
		Animal obj2 = new Dog();
		//Dog obj3 = new Animal();错误子类的引用不能指向父类的对象    
        obj1.eat();
        obj2.eat();
        //obj2.watchDoor(); 不能调用子类独有的方法*/
		
		
		/**
		 * 多态类型中的引用类型转换
		 */
		Dog dog = new Dog();
		Animal animal = dog;//向上类型转换
		Dog dog2 = (Dog) animal;  //向下类型转换(强制类型转换)
		if (animal instanceof Cat) {
			Cat cat = (Cat) animal; //编译时为cat类  ,运行为dog类   ,所以运行报错
		}else {
			System.out.println("无法进行类型转化!");
		}
		
	}
}

输出结果:



                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值