A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 16463535 中级黑马   /  2013-4-18 13:39  /  2241 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 16463535 于 2013-4-19 11:09 编辑

通过学习张老师的视频,我有一个这样的问题。

构造器Constructor是否可被override?

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

3 个回复

倒序浏览
构造器不能被继承 不能重写  但可以重载 Overload

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
  1. class Father
  2. {
  3.         public Father()
  4.         {
  5.                 System.out.println("父亲默认构造方法");
  6.         }
  7.         public Father(String father)//重载的构造方法
  8.         {
  9.                 System.out.println("父亲有参构造方法");
  10.         }

  11. }
  12. class Son extends Father
  13. {
  14.         public Father()
  15.         {
  16.                 System.out.println("儿子可否重写父亲构造方法?");
  17.         }//不能重写父类构造方法,方法声明无效;需要返回类型
  18.        
  19. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
子类构造器一定会调用父类构造器。
先父类、后子类!
当new子类对象时(省去了加载):
        所有属性(父类和子类)都赋值为默认值
        父类的构造代码块和父类的显示初始化语句
        父类构造器的代码
        子类的构造代码块和子类的显示初始化语句
        子类的构造器代码。

当加载子类时:
        所有静态属性(子类和父类)都赋值为默认值
        执行父类的静态块和静态显示初始化语句
        执行子类的静态块和静态显示初始化语句


1 父类子对象
  每个子类对象都有一个父类对象,这个父类对象帮助子类完成父类所有的功能!

2 super关键字(在子类中访问父类成员的通道)
   super.方法,直接去找父类中的。
    this.方法,先在子类中找,找不到再去父类中去找。

3 初始化父类子对象
  子类构造器,无论如何都会去调用父类构造器。

4 隐式和显示调用父类构造器
什么时候隐式调用父类构造器
        没有使用this调用语句,也没有使用super调用语句,那么就隐式调用父类的无参构造器。
        如果使用了this调用语句,就不会隐式调用父类构造器,也不能再加super调用语句。
        如果加了super调用语句,那么就是显式调用父类构造器,而不是隐式调用了。这时也不能再加this调用语句了。

5 什么时候必须使用super
当引用父类属性和父类方法时,而子类中有同名属性或相同方法时,那么就一样要使用super。
super调用语句!

6 什么时候可以使用super
   super调用语句。
引用父类的方法和属性时。
父类中private的东西,是子类使用不了的。
override是用来重写父类中的方法以及重写本类和object的toString()方法。
不能重写Overriding,但可以被重载Overloading。

评分

参与人数 1技术分 +2 收起 理由
陈丽莉 + 2

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马