• java多态的2种表现形式 方法重载和方法覆盖



    方法重载:同一个类中,方法名相同,参数列表不同的2个或多个方法构成方法的重载。

    方法覆盖:子类重新实现了父类中的方法。

    1.方法的重载实例(Overload)

      指我们可以定义一些名称相同的方法,通过定义不同的输入参数来区分这些方法,

    然后再调用时,VM就会根据不同的参数样式,来选择合适的方法执行

    /**
     * 方法重载满足的条件
     * 1.同一个类中,方法名相同,参数列表不同的2个或多个方法构成方法的重载
     * 2.参数列表不同指参数的类型,参数的个数,参数的顺序至少一项不同
     * 3.方法的返回值类型,方法的修饰符可以不同。
     */
    public class Overload{
        
        public static void overLoad(int i){
            System.out.println(i);
        }
        
        /* 下面方法都与第一个方法public static void overLoad(int i)相比较*/
        //public int overLoad(int k){}//错误,参数列表相同
        
        //返回值类型不相同
        public int overLoad(int i,int k){
            return 0;
        }
        //修饰符不同
        private void overLoad(double d){
            
        }
        //修饰符,返回值类型都不同
        private double overLoad(double d,int k){
            return 0;
        }
    }

    2.方法的覆盖实例(Override)

      重写Override表示子类中的方法可以与父类中的某个方法的名称和参数完全相同,

    通过子类创建的实例对象调用这个方法时,将调用子类中的定义方法,这相当于把父类

    中定义的那个完全相同的方法给覆盖了,这也是面向对象编程的多态性的一种表现。

    /**
     * 方法覆盖指子类重新实现了父类中的方法
     * 方法覆盖约束条件:
     * 1.子类的方法名称,参数列表,返回值类型必须与父类中方法的名称,参数列表,返回值类型一致
     * 2.子类方法不能缩小父类方法的访问权限,但可以扩大
     * 3.子类方法不能抛出比父类方法更多的异常,可以不抛出异常
     */
    public class Override{
        
    }
    class Exception1 extends Exception{}
    class Exception2 extends Exception1{}
    class Exception3 extends Exception2{}
    class Parent{
        void method() throws Exception2{}
    }
    class Son extends Parent{
        //private void method(){}//错误,缩小了父类方法的访问权限
        //int method(){}         //错误,方法返回值与父类方法不一致
        void method(int k){}     //通过编译,但不与父类的方法method()构成覆盖
        
        //public void method() throws Exception1{}//错误 抛出比父类更多的异常
        
        //public void method(){} //正确 扩大父类方法的访问权限,不抛出异常
        //void method() throws Exception3{}; //正确 抛出的异常比父类抛出的异常小
        public void method() throws Exception3{}
    }
  • 相关阅读:
    python中的operator.itemgetter函数
    win10下安装Cygwin配置gcc编译环境
    英文单词拼写纠错
    关于文本处理之结巴分词
    mysql 主从复制
    YII2.0 增删改查
    Linux screen命令简介
    Zookeeper简介与安装
    如何在Linux上安装Tomcat
    Java学习笔记之自定义异常
  • 原文地址:https://www.cnblogs.com/qingcong/p/5906533.html
Copyright © 2020-2023  润新知