Java 多态

多态的优点

  1. 消除类型之间的耦合关系
  2. 可替换性
  3. 可扩充性
  4. 接口性
  5. 灵活性
  6. 简化性

多态存在的三个必要条件

  • 继承
  • 重写
  • 父类引用指向子类对象
    比如:
package com.luo.test;

public class Tests {
	public static void main(String[] args) {
	      show(new Cat());  // 以 Cat 对象调用 show 方法
	      show(new Dog());  // 以 Dog 对象调用 show 方法
	                
	      Animal a = new Cat();  // 向上转型  
	      a.eat();               // 调用的是 Cat 的 eat
	      Cat c = (Cat)a;        // 向下转型  
	      c.work();        // 调用的是 Cat 的 work
	  }  
	            
	    public static void show(Animal a)  {
	      a.eat();  
	        // 类型判断
	        if (a instanceof Cat)  {  // 猫做的事情 
	            Cat c = (Cat)a;  
	            c.work();  
	        } else if (a instanceof Dog) { // 狗做的事情 
	            Dog c = (Dog)a;  
	            c.work();  
	        }  
	    }  
	}
	 
	abstract class Animal {  
	    abstract void eat();  
	}  
	  
	class Cat extends Animal {  
	    public void eat() {  
	        System.out.println("吃鱼");  
	    }  
	    public void work() {  
	        System.out.println("抓老鼠");  
	    }  
	}  
	  
	class Dog extends Animal {  
	    public void eat() {  
	        System.out.println("吃骨头");  
	    }  
	    public void work() {  
	        System.out.println("看家");  
	    }  
}

在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值