zoukankan      html  css  js  c++  java
  • 关于方法的继承和覆写

     * 关于方法的覆写:
     *   关于方法的重写和覆盖的前提条件:
     *     子类继承父类,就继承了父类的所有方法和属性,就相当于把父类的代码完全复制一份到子类,只是相当于
     *     我们子类中可以添加新的方法和属性,同时也可以扩展改写继承自父类的方法
     *     1 什么时候方法要进行重写?
     *     如果父类中的方法已经无法满足子类的要求,需要将父类中的方法进行重新写一遍
     *     2.子类如果重写父类中的方法之后,这类对象一定调用重写之后的方法
     *     3 发生方法覆盖的条件:
     *     第一: 发生在具有继承关系的两个类之间
     *     第二: 必须具有相同的方法名,相同的返回值类型,相同的参数列表(如果是参数列表不同,系统就会认为这两个是不同的方法进行重载)
     *     (返回值代表了函数的功能,复写不能更改函数的功能)
     *     第三: 重写的方法不能比被重写的方法拥有更低的访问权限
     *     第四: 重写的方法不能比被重写的方法抛出更广泛的异常
     *     第五: 私有的方法不能被覆盖
     *       不调用的时候就没有报错
     *       调用的时候才会报错,说明,这个方法是运行时错误
     *      第六: 构造方法无法被覆盖,因为构造方法无法被继承
     *      第七: 静态的方法不存在被覆盖
     *      因为,静态方法进来以后,不会再有新的内存操作,所以,就没有覆盖这一说
     *      第八: 覆盖值得是成员方法,和成员变量无关
     *      成员变量,是指这个类代表的所有个体的共有属性,只是属性值不一样
     *
     *      4 继承最基本的作用:代码复用
     *       继承最基本的功能:方法可以重写
     *       new也是代码的重用,但是不可以进行扩展,,重写就是扩展,不可以
     *       new的时候,只能够被调用,对数据进行删减改查,不能够进行功能扩展

    * 私有的方法无法被覆盖,即使在程序中重写了方法,但是底层仍然会调用父类方法
     下面是一个覆写的例子:
    //父类
    class Override_02{//一个类
        //私有方法
        private void m_1(){//私有的没有返回值的m_1方法
            System.out.println( "A'm_1 method invoke!!" );//输出
        }
        public void m2(){
            System.out.println( "我是父类" );
        }
        //入口
        public static void main (String [] args){//公共的静态的没有返回值的main方法,是程序的入口
            //多态:这里是私有方法,不能被继承
            Override_02 a = new B();//运行原理:把子类对象的地址赋值给父类的对象(多态),输出的时候先看能不能被继承,如果不能被继承,那就输出父类的内容,如果能被继承,就看能能不能被覆写,(要求:返回值,方法名,形参列表都要一样),如果没被覆写,就输出父类的内容,如果被覆写了,就输出子类的新内容
            a.m_1();//父类中的m_1方法不能被继承,所以输出的是父类的m_1
            a.m2();//父类中的m2方法能被继承,所以输出子类中的内容,因为子类的方法名,返回值,形参列表和父类相同,所以可以被复写,输出子类的新内容
        }
    }
    //子类
    class B extends Override_02{
        //尝试重写父类的私有方法
    B(){

        }
        public void m_1(){
            System.out.println( "'B'm_1 method invoke" );
        }
        public void m2(){
            System.out.println( "我是子类 " );
        }
    }

       由于学习方法的覆写的时候,还没有学习多态,所以里面涉及多态的东西我也知道的不是很多,主要的是关于方法的覆写,运行原理也是我自己的理解写出来的,有什么不对的地方还希望和大家多多交流,O(∩_∩)O谢谢!

  • 相关阅读:
    Python教程(2.2)——数据类型与变量
    Python教程(2.1)——控制台输入
    Python教程(1.2)——Python交互模式
    (译)割点
    Python教程(1.1)——配置Python环境
    Python教程(0)——介绍
    [HDU1020] Encoding
    [HDU1004] Let the balloon rise
    扩展中国剩余定理 exCRT 学习笔记
    51nod 1943 联通期望 题解【枚举】【二进制】【概率期望】【DP】
  • 原文地址:https://www.cnblogs.com/xrmqbl804915256/p/4718513.html
Copyright © 2011-2022 走看看