首页 > 代码库 > 面向对象(子父类中变量、函数、构造函数的特点)

面向对象(子父类中变量、函数、构造函数的特点)

<style></style>

/**
* 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.
*/