您的位置:首页 > 编程语言 > Java开发

[置顶] Java多态入门讲解(深入浅出)

2017-07-25 11:17 162 查看

Java三大特性之一 (多态)

什么是多态(核心概念):

多态就是指同一操作,作用于某一类对象,可以有不同的解释,产生不同的执行结果。 
(考虑到文字讲解会不会有点抽象,下面用代码来演示更直观些)
在写代码前我先说两个死公式(没有为什么,反正就死公式):

(重点一) 
多态存在的三个必要条件: 

1、需要存在继承关系。           既:子类要继承父类            (结论:继承是实现多态的基础)
2、需要存在实现关系。           既:子类要重写父类的方法  (结论:要有方法的重写)   
3、父类引用指向子类对象。   既:(父类) Animal  obj  =  new  (子类) Dog (); (结论:父类数据类型的引用指向子类对象)
(重点二)
多态的作用:
1、多态消除了类型之间的耦合关系。

既:Animal obj  =  new  Dog ();    父类 Animal 指向子类 Dog ();  就由 Dog ();  对象来实现 Animal  里面的方法 

既:Animal obj  =  new  Cat ();     父类 Animal 指向子类  Cat ();   就由 Cat ();   对象来实现 Animal  里面的方法 

      总结:父类指向谁就由谁来实现父类里面的方法,类型之间相互独立不受彼此的影响,所以说多态消除了类型之间的耦合关系。

2、多态的存在提高了程序的扩展性和后期的可维护性。

既:Animal obj  =  new  Dog ();    父类 Animal 指向子类 Dog ();  就由 Dog ();  对象来实现 Animal  里面的方法 

既:Animal obj  =  new  Cat ();     父类 Animal 指向子类  Cat ();  就由 Cat ();   对象来实现 Animal  里面的方法 

      总结:父类指向谁就由谁来实现父类里面的方法,不仅提高了代码的扩展性也提高了代码的可维护性。

3、多态通过分离做什么(父类)和怎么做(子类),从另一个角度将接口和实现进行分离。

/**

 * 创建一个父类 Animal (动物)

 */
public class Animal {
public void eat(){     
System.out.println("动物具有吃的能力");
}
}


/** 

 * 创建一个子类 Dog (狗)并继承父类 Animal (动物) 

  */

public class Dog extends Animal {

@Override
public void eat() { // 子类重写了从父类继承过来的方法
System.out.println("狗具有吃骨头的能力");
}

public void attack() { // attack 是子类独有的方法,不是从父类继承过来的
System.out.println("狗具有攻击的能力");
}

}




/**

 * 创建一个子类 Cat (猫) 并继承父类 Animal (动物)

 */

public class Cat extends Animal {

// 子类 Cat 什么都没有,只是单单的从父类继承了所有的东西过来

}



/**

 * 主程序类  Test

 */


public class Test {

public static void main(String[] args) {
Animal obj = new Animal(); // 父类的引用指向本类的对象
a.eat(); // 调用的是本类的方法

Animal obj2 = new Dog(); // 父类的引用指向子类的对象
d.eat(); // 调用的是子类重写后的方法(程序会优先调用子类重写过的方法)
// d.attack(); //父类的引用指向子类的对象,不能调用子类独有的方法。只能调用它跟父类有关联的方法

Animal obj3 = new Cat(); // 父类的引用指向子类的对象
c.eat(); // 调用的是从父类继承过来的方法
}

}


执行结果如下:



动物具有吃的能力

狗具有吃骨头的能力

动物具有吃的能力




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: