zoukankan      html  css  js  c++  java
  • 多态方法

           把子类对象赋值给父类的对象变量的情况称为向上转型,向上转型是自动进行的,无需开发人员干预。此时的父类对象变量只可以访问父类中声明的成员,子类所特有的部分被隐藏。

       如下an2.getEyesColor();这样写是会报出异常的,此时的父类变量an2不能访问子类Dog2中的方法。

     

           而多态方法是指:

           方法的多态是基于方法覆盖和动态绑定机制的。也就是在对象变量上调用覆盖方法,具体调用的是子类中的方法还是父类中的方法,由运行时绑定决定,不是由声明对象变量时的类型决定。如下示例代码,控制台输出结果为:

     

    package _4_5.Override.多态;
    
    
    public class MethodPolymorphismTest {
        public static void main(String[] args) {
            Animal2 an = new Animal2("啥动物");
            System.out.println(an.getBark());// 调用多态方法
            Animal2 an2 = new Dog2("小黑狗", "黑色");// 向上转型
            System.out.println(an2.getBark());// 调用多态方法
            Animal2 an3 = new Cat2("蓝猫", "蓝色");// 向上转型
            System.out.println(an3.getBark());// 调用多态方法
        }
        
        static class Animal2 {
            private String name;
            public Animal2(String name) {
                this.name = name;
            }
            public String getName() {
                return name;
            }
            public String getBark(){//获取动物的叫声
                return "叫声。。。。";
                
            }
    
        }
        static class Cat2 extends Animal2{//猫科类继承动物类
            private String eyesColor;
    
            public Cat2(String n, String c) {
                super(n);
                eyesColor = c;
            }
    
            public String getEyesColor() {
                return eyesColor;
            }
            public String getBark(){//获取猫的叫声
                return "喵喵喵";
                
            }
        }
    
        static class Dog2 extends Animal2 {
            private String furColor;
    
            public String getFurColor() {
                return furColor;
            }
    
            public Dog2(String n, String c) {
                super(n);
                furColor = c;
            }
            public String getBark(){//获取狗的叫声
                return "汪汪汪";
                
            }
    
        }
    }
  • 相关阅读:
    第6课.内联函数分析
    第5课.引用的本质分析
    第4课.布尔类型和引用
    第3课.进化后的const
    第2课.C到C++的升级
    c语言深度解剖(笔记)
    你必须知道的495个c语言问题(笔记)
    JS弹出框
    车牌号正则表达式
    input输入文字后背景色变成了黄色 CSS改变(去掉黄色背景)
  • 原文地址:https://www.cnblogs.com/huangahuo/p/8387086.html
Copyright © 2011-2022 走看看