zoukankan      html  css  js  c++  java
  • 多态的应用

     

           一、多态的概念:面向对象语言有三大主要特征:封装、继承、多态、封装是为了把我们需要隐藏的东西私有化,不让别人知道,把该暴露的暴露出去;继承提高了代码的复用性,我们可以直接拿父类中的属性,而且子父类的产生使类与类之间产生了关系,就有了多态的出现。顾名思义,多态就是事物的多种体现形态,学生军人农民都是人,我们既可以说他们是农民、军人又可以说他们是人,这就是多态。

          二、多态的体现:多态必须是父类的引用指向子类的对象:Person p=new Student();当然这个前提是Student 这个类extends Person 这个类。多态的必要性:存在继承关系,子父类或者是实现关系(接口中)。然后就是发生重写,就是有重写存在。

         三、多态的好处:大大提到了代码的可扩展性;只要我们的父类定义好了,引用指向子类,就可以调用子类中的方法了,代码体现如下:

    class DuoDemo
    {
     public static void main(String[] args)
     {
       //Student s=new Student();
      // s.eat();
      // Person p=new Student();
       function(new Student());//匿名对象可以作为参数传递
       //Person p1=new Soldier();
       function(new Soldier());
     }
     public static void function(Person p) //相当于Person p=new Soldier();
     {
                  p.eat();
     }
    }
    class Person  //定义一个Person类,里面有eat()的功能
    {
     void eat()
     {
                System.out.println("吃饭");
     }
    }
    class Student extends Person//定义一个学生类,他继承了Person类,
    {
     void eat()
     {
              System.out.println("学生在吃饭:");
     }
    }
    class Soldier extends Person//定义一个军人类,它继承了Person类
    {
     void eat()
     {
             System.out.println("军人在吃饭");
     }
    }
         四、多态的弊端:只能用父类的引用访问到父类的成员,而不能访问到子类的成员,如果需要访问,就要把父类引用强制转换为子类引用,就是向下转型

    如果学生中有一个功能:study(),需要调用,

    那么Person p=new Person(); Student s=Student(p); s.study();就可以了。

         五.多态中成员的特点:

    1、首先说一下匿名对象,new  Student();就是没有名字的对象,当我们对类中的方法只调用一次时,可以使用匿名对象。new Student()、eat();但是如果多次调用,就必须使用引用。

    另外匿名对象也可以作为一个实际参数来传递,就是没有指向,不使用引用。

    2.多态中的成员函数的特点:编译时期,看的是左边的引用型变量所属类中是否有调用的方法。就是看父类中有无被调用的方法。而运行时,看的是右边,就是子类中是否有调用的方法。所以父类方法还是要写的,否则是不能够编译通过的。

    3.多态中成员变量的特点:编译运行都是看左边,是父类引用,就执行父类的方法,是子类引用就执行子类的方法。

    4、多态中静态变量的特点:也是看左边,方法同上。

     

     

  • 相关阅读:
    今天是周日,一如既往的在加班
    懒出来的框架
    把Visio文档中形状信息导出到XML文件的VBA代码
    DataGridView多线程更新数据的问题的解决办法
    为VS定制一个自己的代码生成器
    安装VS2012之后自己开发的自定义工具没法使用问题的解决办法
    通过RSA进行私钥加密公钥解密算法的进一步改进
    程序员在职场 该反思了吗?
    图片与字节数组相互转换的方法
    jQuery Ajax 方法调用 Asp.Net WebService 的详细例子
  • 原文地址:https://www.cnblogs.com/warrior4236/p/6055739.html
Copyright © 2011-2022 走看看