美文网首页互联网科技
java基础之---多态

java基础之---多态

作者: xml_ | 来源:发表于2019-05-05 16:30 被阅读5次

正文

多态的存在有三个必要的条件:

  • 要有继承(两个类之间存在继承关系,子类继承父类)
  • 要有重写(在子类里面重写从父类继承下来的方法)
  • 父类引用指向子类对象
    这三个条件一旦满足,当你调用父类里面被重写的方法的时候,实际当中new的是哪个子类对象,就调用这个子类对象的方法。下面以代码进行说明

这里创建了一个Animal类,作为父类:

package com.mlin;

public class Animal {
    
    //私有成员变量
    private String name;
    
    //构造方法
    Animal(String name){
        this.name = name;
    }
    
    //这里定义了一个方法
    public void call(){
        System.out.println("动物......");
    }

}

创建两个子类,分别为Cat类和Dog类,它们都继承Animal类:

package com.mlin;

public class Cat extends Animal {
    
    //定义自己的私有成员变量
    private String catColor;
    

    //构造方法
    Cat(String name ,String catColor) {
        super(name);//在构造方法的实现里面首先使用super调用父类Animal的构造方法Animal(String name),把子类对象里面的父类对象先造出来
        this.catColor = catColor;
    }
    
    //这里是重写了call方法
    public void call(){
        System.out.println("我是cat哦....");
    }

}
package com.mlin;

public class Dog extends Animal {
    
    //定义自己的私有成员变量
    private String dogColor;
    

    //构造方法
    Dog(String name ,String dogColor) {
        super(name);//在构造方法的实现里面首先使用super调用父类Animal的构造方法Animal(String name),把子类对象里面的父类对象先造出来
        this.dogColor = dogColor;
    }
    
    //这里是重写了call方法
    public void call(){
        System.out.println("我是dog哦....");
    }

}

创建一个person类,用于饲养宠物:

package com.mlin;

public class Person {
    
    //定义两个私有成员变量
    private String name;
    private Animal pet;
    
    /**
     * 在person类里面定义构造方法,第二个参数是Animal类型给程序带来了灵活性
     * 因为这个Animal类型的参数是父类对象的引用类型,因此当我们传参数的时候,
     * 可以把这个父类的子类对象传过去,即传Dog、Cat都可以。
     * @param name
     * @param pet
     */
    Person(String name,Animal pet){
        this.name = name;
        this.pet = pet;
    }
    
    public void myCall(){

        pet.call(); //传了什么对象进来,就让这个对象去调用它自己的call方法
    }
    
    public static void main(String arg[]){
        
        //这里分别new了一个cat对象和dog对象,这两个都包含一个父类Animal对象
        Cat cat = new Cat("catname", "black");
        Dog dog = new Dog("dogname","yellow");
        
        //这里new了两个person对象,分别为p1,养了一个cat,另一个是p2,养了一只dog
        Person p1 = new Person("andy", cat);
        Person p2 = new Person("andy", dog);
        
        //两个person对象调用了myCall方法,使他们自己的宠物调用自己的call方法
        p1.myCall();
        p2.myCall();
    }

}

运行结果如下:

结果
以上就实现了动态绑定,也就是多态。

原创作者:凌小样
作品链接:https://www.jianshu.com/p/c8160a2bd019
【原创不易,转载请注明出处,感谢理解】
一位爱生活,爱创作,爱分享,爱自己的90后女程序员一枚,记录工作中的点点滴滴,一起学习,共同进步,期待能和优秀的您交上朋友

相关文章

  • java基础概念

    java_basic 介绍 java基础 三大特性之—封装 三大特性之—继承 三大特性之—多态 抽象 接口 深拷贝...

  • java基础之---多态

    正文 多态的存在有三个必要的条件: 要有继承(两个类之间存在继承关系,子类继承父类) 要有重写(在子类里面重写从父...

  • 招银网络面试题、考点、知识点总结(Java岗)

    java基础 全是基础不用多说肯定考的多,尤其是招银 OOP特性/java语言特性:封装、继承、多态 多态具体的表...

  • 招银网络面试题、考点、知识点总结(Java岗)

    java基础 全是基础不用多说肯定考的多,尤其是招银 OOP特性/java语言特性:封装、继承、多态 多态具体的表...

  • Java笔记

    Java基础 Java面试通关要点 1.面向对象的特征 封装 继承 多态 封装继承多态 2.final,final...

  • Android面试

    JAVA 基础 java的特点 (OOP),封装、继承、多态 ==、equals、hashCode的作用,区别 什...

  • 面经一

    目的: 总结下面试时遇到的问题,并附上自己的答案. 1 Java基础 1.1 Java的继承,多态。 以及多态...

  • Java基础-多态

    1.什么是多态: 同一个对象在不同时刻体现出来的不同状态. 2.多态的前提: A:有继承或者实现关系.B:有方法重...

  • JAVA基础-多态

    JAVA基础-多态 结论: 1、当子父类中出现同名的成员变量时,多态调用该变量时,如果父类没有该变量,则编译失败。...

  • Java基础-多态

    一、实质(比较官方的回答) 多态是指:当系统A访问系统B的服务时,系统B可以通过多种实现方式来提供服务,而这一切对...

网友评论

    本文标题:java基础之---多态

    本文链接:https://www.haomeiwen.com/subject/hlshoqtx.html