• java 多态的深入理解


    简单来说 :

    多态 能够很好的解决代码耦合性的问题

    考虑这样一个场景

    有个 买了辆捷达汽车 .这个系统应该如何设计呢?

    public class JettaCar {
    	public void run() {
    		System.out.println("JettaCar run");
    	}
    }
    public class Person {
    	private JettaCar jettaCar;
    
    	public Person(JettaCar jettaCar) {
    		super();
    		this.jettaCar = jettaCar;
    	}
    
    	public void drive() {
    		jettaCar.run();
    	}
    
    	public static void main(String[] args) {
    		Person p = new Person(new JettaCar());
    		p.drive();
    	}
    

      

    看起来代码功能好像实现了? 那如果后来他买了宝马车,那又该在怎么做呢?

    很简单嘛  在新建一个宝马类,在person中传入即可,

    但是我们的核心代码也要修改,能不能不修改person类呢?  --当然可以,抽象出汽车接口

    定义一个汽车Car接口,定义run方法

    person 中 我们使用该接口 

    public interface Car {
    void run();
    }
    
    public class BmwCar implements Car {
    
    	@Override
    	public void run() {
    	System.out.println("BmwCar run");
    		
    	}
    
    }
    Person 里面是一个接口
    public class Person {
    	//private JettaCar jettaCar;
    	private Car car;
    	public Person(Car car) {
    		super();
    		this.car = car;
    	}
    
    	public void drive() {
    		car.run();
    	}
    
    	public static void main(String[] args) {
    		//这里我们传入什么汽车对象 就调用什么对象的run方法,拓展性增强
         Person p = new Person(new JettaCar());
    		p.drive();
    	}
    }
    

      

    总结:系统未来可能需要拓展时,记得定义接口。以增强拓展性。

  • 相关阅读:
    【翻译自mos文章】rman 标准版和企业版的兼容性
    HDU 1010 Tempter of the Bone
    uva 10716 Evil Straw Warts Live(贪心回文串)
    适配器及适配器模式
    Android推送技术研究
    【hadoop2.6.0】倒排索引遇到问题了
    【hadoop2.6.0】MapReduce原理
    【hadoop2.6.0】一句话形容mapreduce
    【leetcode】Median of Two Sorted Arrays(hard)★!!
    【leetcode】Merge k Sorted Lists
  • 原文地址:https://www.cnblogs.com/javabigdata/p/6694362.html
Copyright © 2020-2023  润新知