您的位置:首页 > 职场人生

黑马程序员_JAVA基础_多态的理解

2013-05-24 12:35 274 查看
------- android培训java培训、期待与您交流! ----------

JAVA是一种面向对象的程序语言。面向对象的特别则包括:封装、继承、多态。

多态可以理解为事物存在的多种体现形态。

在多态中成员函数的特点:

在编译时期,参阅引用型变量所属的类中是否有调用的方法。如果有,编译通过,如果没有编译失败。

在运行期,参阅对象所属的类中是否有调用的方法。

简单总结就是:成员函数在多态调用时。编译看左边,运行看右边。

1.多态的体现

父类的引用指向了自己的子类对象。

父类的引用也可以接收自己的子类对象。

2.多态的前提

必须是类与类之间的关系,要么继承,要么实现。

通常还是有一个前提:存在覆盖。

3.多态的好处

多态的出现大大的提高了程序的扩展性。

可替换性:多态对已存在的代码具有可替换性。

可扩充性:多态对代码具有可扩充性。增加新的子类不影响已存在类的多态性、继承性,以及其他特性的运行和操作。实际上新加子类更容易获得多态功能。

接口性:多态是超类通过方法签名,向子类提供了一个共同接口,由子类来完善或者覆盖它而实现的。

灵活性:它在应用中体现了灵活多样的操作,提高了使用效率。

简化性:多态简化了对应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时,这个特点尤为突出和重要。值得注意的是,多态并不能够解决提高执行速度的问题,因为它基于动态装载和地址引用,或称动态绑定。

4.多态的弊端

提高了扩展性,但是只能使用父类的引用访问父类中的成员。

 

多态的列子:

public class Joker {

 public static void main(String[] args) {

//  function(new Cat());

//  function(new Dog());

//  Animal a = new Cat();

//  Cat cat = (Cat)a;

//  cat.catchMouse();

  MainBord mb = new MainBord();

  mb.run();

  mb.usePci(new SoundCard());

  

 }

 

 static void function(Animal a) {

  a.eat();

 }

 

}

class SoundCard implements Pci {

 @Override

 public void close() {

  // TODO Auto-generated method stub

  System.out.println("SoundClose");

 }

 @Override

 public void open() {

  // TODO Auto-generated method stub

  System.out.println("SoundPlay");

 }

 

}

interface Pci {

 public void open();

 public void close();

}

class MainBord {

 public void run() {

  System.out.println("MainBordRun");

 }

 

 public void usePci(Pci p) {

  if(p != null) {

   p.open();

   p.close();

  }

 }

 

}

//多态的使用

abstract class Animal {

 abstract void eat();

}

class Cat extends Animal{

 @Override

 void eat() {

  // TODO Auto-generated method stub

  System.out.println("猫吃鱼");

 }

 

 void catchMouse() {

  System.out.println("抓老鼠");

 }

}

class Dog extends Animal{

 @Override

 void eat() {

  // TODO Auto-generated method stub

  System.out.println("啃骨头");

 }

 

 void lookHome() {

  System.out.println("看家");

 }

}

    

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