zoukankan      html  css  js  c++  java
  • 面向对象(子父类中变量、函数、构造函数的特点)

    /**
    * Created by 刘朋程 博客园 on 2014-07-15.
    */
    class fu
    {
        int num = 4 ;               //定义父类的变量num = 4
        fu()                        //定义父类的构造函数
        {
            System.out.println("fu run");
        }
        void speak()                //定义父类的方法
        {
            System.out.println("fu hanshu run");
        }
    }
    /**
    * Created by 刘朋程 博客园 on 2014-07-15.
    */
    class zi extends fu             //定义子类并继承父类
    {
        //super();              隐式super空参数的构造函数
        int num = 5;                //定义子类的变量num = 5
        zi()                        //定义子类的构造函数
        {
            System.out.println("zi run");
        }
        void speak()                /*定义子类的方法  子类继承父类的方法并进行覆盖。
                                    *保留父类原有的功能定义,并重写功能内容,对于以后的
                                    * 功能扩展方便进行
                                    *
                                    * 覆盖的注意事项
                                    * 1、子类覆盖父类,必须保证子类权限大于等于父类权限
                                    * 2、静态只能覆盖静态
                                    */
        {
            System.out.println(this.num);    //this代表引用的是本类的变量
            System.out.println(super.num);   //super代表引用的是父类的变量
            System.out.println("zi hanshu run");
        }
    }
    /**
    * Created by 刘朋程 博客园 on 2014-07-15.
    */
    public class ExtendsDemo {
        public static void main(String [] args)
        {
            zi z = new zi();
            z.speak();
    /* 输出结果
    *   fu run 首先运行父类的构造函数
    *   zi run 然后运行子类的构造函数
    *   5      this代表引用的是本类的变量,所以结果是 5
    *   4      super代表引用的是父类的变量,所以结果是 5
    *   zi hanshu run   同名的speak方法存在是,运行子类的函数
    *
    *
    * 子类函数的实例化过程
    *
    * 在对子类对象初始化时,父类的构造函数也会运行,并且首先运行
    * 因为子类的构造函数默认第一行有一条隐式super空参数的构造函数
    * 而且所有子类的构造函数默认第一行都有一条隐式super空参数的构造函数
    *
    * 为什么子类一定要访问父类的构造函数呢?
    * 以为父类中的数据子类可以直接获取,所以子类对象在建立时,需要先
    * 查看父类是如何对这些数据进行初始化的。
    *
    * 如果要访问父类中指定的构造函数,可以通过手动指定super语句的方式
    * 去指定
    * 比如说
    * class fu
    * fu(int x)
    * {}
    * class zi extends fu
    * super(6);
    * {}
    *
    * 注意 super语句一定定义在子类构造函数的第一行
    *
    *结论
    * 子类的所有的构造函数,默认都会访问父类中的空参数的构造函数。
    * 因为子类的每一个构造函数的第一行都有一句隐式super();
    *
    * 当父类中没有空参数的构造函数时,子类必须手动通过super或者this
    * 语句形式来指定要访问的构造函数
    **/

        }
    }
    /**
    * Created by 刘朋程 博客园 on 2014-07-15.
    */

  • 相关阅读:
    python+fiddler 抓取抖音数据包并下载抖音视频
    fiddler抓包+安卓机 完成手机app抓包的配置 遇到的一些问题
    Mobileye独创性创新
    EyeQ进展The Evolution of EyeQ
    Mobileye高级驾驶辅助系统(ADAS)
    重型车辆盲区行为检查Behaviours – Heavy Vehicle Blind Spots
    Xilinx低比特率高品质 ABR 视频实时转码(HPE 参考架构)
    Xilinx FPGA全局介绍
    用NumPy genfromtxt导入数据
    如何在Python中加速信号处理
  • 原文地址:https://www.cnblogs.com/liupengcheng/p/3848455.html
Copyright © 2011-2022 走看看