当前位置 博文首页 > YHSevenWater的博客:Java多态性

    YHSevenWater的博客:Java多态性

    作者:[db:作者] 时间:2021-08-11 16:04

    多态

    1.理解多态性:可以理解为一个事物的多种形态。

    2.何为多态性:

    对象的多态性:父类的引用指向子类的对象(或子类的对象赋给父类的引用)

    3.多态的使用:虚拟方法调用

    有了对象的多态性以后,我们在编译期,只能调用父类中声明的方法,但在运行期,我们实际执行的是子类重写父类的方法。

    ★总结:编译,看左边;运行,看右边。Person person = new Man(?);

    “看左边”:看的是父类的引用(父类中不具备子类特有的方法);
    “看右边”:看的是子类的对象(实际运行的是子类重写父类的方法)。

    4.多态性的使用前提:

    ①类的继承关系;②有方法的重写。

    5.对象的多态性,只适用于方法,不适用于属性。

    下面通过程序演示多态性的思想,其核心思想就是上面提到的(★总结)部分:

    package com.java.oop3;
    /**
     * @ClassName Person
     * @Description:    人类
     * @Author Seven
     * @Date 2021/7/30 9:54
     * @Version 1.0
     **/
    public class Person {
        int age;
        int weight;
    
        public void run(){
            System.out.println("跑步");
        }
    
        public void eat(){
            System.out.println("吃饭");
        }
    
        public void isSmoking(){
            System.out.println("抽烟");
        }
    }
    
    package com.java.oop3;
    /**
     * @ClassName Man
     * @Description:    男人类
     * @Author Seven
     * @Date 2021/7/30 9:54
     * @Version 1.0
     **/
    public class Man extends Person{
        @Override
        public void eat() {
            System.out.println("男人吃得多");
        }
    
        @Override
        public void run() {
            System.out.println("男人跑得更快");
        }
    
        @Override
        public void isSmoking() {
            System.out.println("男人抽烟的多");
        }
    }
    
    package com.java.oop3;
    /**
     * @ClassName Woman
     * @Description:    女人类
     * @Author Seven
     * @Date 2021/7/30 9:54
     * @Version 1.0
     **/
    public class Woman extends Person{
        @Override
        public void run() {
            System.out.println("女人跑得慢一点");
        }
    
        @Override
        public void eat() {
            System.out.println("女人吃得少");
        }
    
        @Override
        public void isSmoking() {
            System.out.println("女人抽烟的少");
        }
    }
    
    package com.java.oop3;
    /**
     * @ClassName PersonTest
     * @Description:    测试类(多态的使用)
     * @Author Seven
     * @Date 2021/7/30 9:54
     * @Version 1.0
     **/
    public class PersonTest {
        public static void main(String[] args) {
            PersonTest test = new PersonTest();
            test.function(new Man());   //多态的作用,提高了代码的通用性。
            test.function(new Woman());
            }
        public void function(Person person){
            person.eat();
            person.run();
            person.isSmoking();
        }
    }
    

    在这里插入图片描述

    cs