黑马程序员技术交流社区

标题: 子类实例化过程 [打印本页]

作者: 空。    时间: 2015-6-8 21:54
标题: 子类实例化过程
class Fu
{       
        Fu()
        {
                System.out.println("Fu run");
        }
}
class Zi extends Fu
{
        Zi()
        {
                /**
                子类的构造函数第一行有一条隐士的语句
                super();
                */
                System.out.println("Zi run");
        }
        Zi(int x)
        {
                System.out.println("Java");
        }
}

class ExtendsDemo4
{
        public static void main(String[] args)
        {
                Zi z=new Zi();
                Zi z1=new Zi(4);
        }
}
/*
在对子类对象进行初始化时,父类的构造函数也会运行:
        因为:子类的构造函数默认第一行有一条隐式语句
                super();
        super():会访问父类中空参数的构造函数,
                而且子类中所有的构造函数默认第一行
                都是super();

为什么子类一定要访问父类中的构造函数:
        因为父类中的数据子类可以直接获取,所以子类
                对象在建立时,需要先产查看父类是如何
                初始化的,所以子类在对象初始化时,要先
                访问以下父类中的构造函数,如果要访问
                父类中指定构造函数,可以通过手动定义
                super语句的方式来指定.

super :super 语句一定定义在子类构造函数的第一行。

子类的实例化过程:
        结论:
                子类的所有的构造函数,默认都会访问父类中
        空参数的构造函数,因为子类每一个构造函数内的
        第一行都有一句隐式的super();
       
当父类中没有空参数的构造函数时,子类必须手动
通过super或this语句形式来指定要访问父类中的构造函数

当然:子类的构造函数第一行也可以手动指定this语句
        来访问本类中的构造函数。子类中至少会有一个
        构造函数回访完父类中的构造函数



父类中构造函数中也会有一条隐式super()语句,他
        访问的是所有类的父类:object

*/


作者: Tangtang    时间: 2015-6-8 21:56
:victory:好好学习
作者: 柳叶飞刀    时间: 2015-6-8 21:59
好好学习:loveliness::lol:call:
作者: DAN66    时间: 2015-6-8 23:07
今天正好学这块,再来回顾下:#
作者: wtf518    时间: 2015-6-10 21:44
总算把这部分搞懂啦!!!!
作者: 安逸小弟    时间: 2015-6-10 21:48
好好学习 天天向上
作者: QQheima    时间: 2015-6-10 23:15
多敲多练记得牢,做笔记分享知识一起学习




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2