zoukankan      html  css  js  c++  java
  • java面向对象之多态

    多态:指同一个实体同时具有多种形式

    好比,你去面馆吃面,说我要吃面,那么;老板给我牛肉面,鸡蛋面等都可以,

    这就是说"面"有多种形态,也就是说实体有多种形态;

    编译时的类型由声明该变量时使用的类型决定,运行时的类型由实际赋给变量的对象决定。

    如果编译时类型和运行时类型不同,就出现多态。

    Eg:

    前提:Student  extends   Person:

    Person p = new Person();

    Student s = new Student();

    Person p = new Student();//多态

    引用关系:父类变量指向子类实例对象

    实现多态的机制:

    父类的引用变量可以指向子类的实例对象,而程序调用的方法在运行期才动态绑定,就是引用变量所指向的真正实例对象的方法,也就是内存里正在运行的那个对象的方法,而不是引用变量的类型中定义的方法。

    多态的作用:

    把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。

    只修改方法的实现,不必修改方法的声明

    继承是多态产生的前提条件;

    分类:

    编译时多态:方法重载

    运行时多态:方法覆写

    Eg:

    package test;

    class Dog{

        void eat(){

            System.out.println("一般的狗吃一般的狗粮!");

        }

    }

    class HashDog extends Dog{

        void eat(){

            System.out.println("哈士奇吃哈士奇的狗粮!");

        }

    }

    class ZangAoDog extends Dog{

        void eat(){

            System.out.println("藏獒吃藏獒的狗粮!");

        }

    }

    //定义一个动物园喂的方法

    class Zoo{

       

        void feed(Dog d){

            d.eat();

        }

       

    }

    public class Demo11 {

        public static void main(String[] args) {

           

            Dog hd = new HashDog();

           

            Dog zd = new ZangAoDog();

           

            Zoo z = new Zoo();

            z.feed(hd);

            z.feed(zd);

        }

    }

    输出:

    哈士奇吃哈士奇的狗粮!

    藏獒吃藏獒的狗粮!

  • 相关阅读:
    [转]在C#中使用异步Socket编程实现TCP网络服务的C/S的通讯构架(一)
    Ubuntu操作系统安装使用教程 转载
    ArcInfo和MapInfo的比较 转 http://www.cnblogs.com/njnudt/archive/2007/07/18/821974.html
    jxl导出excel
    flex 图表
    telnet/ssh基本知识
    flex 判断数据类型的几种方法
    友人记
    16进制颜色表
    Ajax不能提交excel
  • 原文地址:https://www.cnblogs.com/fanweisheng/p/11131358.html
Copyright © 2011-2022 走看看