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、多态中静态变量的特点:也是看左边,方法同上。

     

     

  • 相关阅读:
    最新屏蔽微信举报方法
    C# WIN 生成机器码
    Quartz.net的快速简单上手使用以及防止IIS回收停止Job的处理
    MVC、Web API 请求接口报错“自定义错误模块不能识别此错误。”解决
    获取微信短链接的官方接口
    Window 通过cmd查看端口占用、相应进程、杀死进程
    微信域名检测、防封,微信跳转技术揭秘(二) -- 微信跳转揭秘
    微信域名检测、防封,微信跳转技术揭秘(一) -- 域名检测原理及防封方案
    各种比较方便给力的小工具
    《Git学习指南》学习笔记(三)
  • 原文地址:https://www.cnblogs.com/warrior4236/p/6055739.html
Copyright © 2011-2022 走看看