• 多态方法


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

       如下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 "汪汪汪";
                
            }
    
        }
    }
  • 相关阅读:
    九,WPF资源
    八,WPF 命令
    七,WPF的元素绑定
    六,WPF的Application类
    五,控件
    四,路由事件
    三,依赖项属性
    二,WPF的布局
    一,XAML基础
    压缩解压缩字符串
  • 原文地址:https://www.cnblogs.com/huangahuo/p/8387086.html
Copyright © 2020-2023  润新知