`
jguangyou
  • 浏览: 368926 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java中默认构造方法和子父类构造方法的继承调用

阅读更多

1.       默认构造方法:

默认构造方法是没有参数的构造方法,可以简单的分为两种:

(1)       隐含的默认构造方法

(2)       程序显式定义的构造方法

java语言中,每个类至少有一个构造方法,为了保证这一点,如果用户定义的类中没有构造方法,那么java语言将自动提供一个隐含的默认构造方法,该构造方法没有参数,用public修饰,没有返回值,并且方法体为空,例如:

       public ClassName(){}

当然在程序中也可以明确的定义默认构造方法,

如果在类中定义了一个或者多个构造方法,并且所有的构造方法都有参数,这个类就失去了默认的构造方法。如果想保留默认的构造方法,必须显式的定义出来。例如:

       public class Test(){

              public Test(String name){System.out.println(name);};

              public Test(int age){System.out.println(age);}

}

对于这个类,如果要定义一个对象 Test test = new Test();这个就是错误的,因为没有这个构造方法,如果想这样定义,必须显式的定义默认构造方法。

2.       子类调用父类的构造函数

父类的构造函数不能被子类继承,但是在子类对象被创建时,如果不显式调用父类的构造方法,这是子类会调用父类的默认构造方法。如果要调用父类的其他构造方法(带参构造方法),必须出使用super显式的指

使用super必须遵循一下规则:

(1)       在子类的构造方法中不能直接使用父类的构造方法名称直接调用,而必须使用super语句

(2)       如果在子类的构造方法中时用super调用父类的构造方法,他必须作为构造方法的第一条语句出现。

总结

       在创建子类的对象时,java虚拟机首先执行父类的构造方法,然后再执行子类的构造方法,在多重继承的情况下,将从最顶层的类的构造方法开始执行,然后依次执行各个类的构造方法。

分享到:
评论

相关推荐

    Java面向对象总结

    1.子类继承父类就拥有了父类的属性和方法。...默认隐式调用父类无参数的构造方法 4.如果要在子类的构造方法中显式调用父类的构造方法。使用super(参数列表),但是这行代码必须是在 子类的构造方法的第一行。

    java中继承的使用案例

    (2)学生类Student继承Person,增加了学号信息,有两个构造方法Student()和Student(姓名,性别,年龄,学号),调用父类Person的构造方法对父类部分进行构造,在Student()中,默认学号为空字符串,在Student...

    java基础.txt

    java中的类只有单继承,接口具有多继承 继承具有单根性,一个类只能有一个父类 不能继承父类的有三种情况 · 用private修饰的属性和方法 · 构造方法 · 用protected修饰的属性和方法,父类和子类不在同一包下...

    JAVA基础知识精华总结 收藏

    (3) 主类的超类由高到低进行默认构造方法的调用。注意,在调用每一个超类的默认构造 方法前,先进行对此超类进行非静态对象的初始化。 (4) 主类非静态成员的初始化。 (5) 调用主类的构造方法。 3、 关于构造方法...

    Java开发技术大全(500个源代码).

    constructWithPara.java 带参数的构造方法 declareDefault.java 缺省访问权限的使用 declarePrivate.java 私有访问权限的使用 declareProtected.java 保护访问权限的使用 deriveClass.java 子类访问父类变量...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    10.2.4 调用父类中的构造方法 256 10.2.5 对象也会“变脸” 258 10.2.6 遵守语法,正确“变脸” 262 10.3 覆盖——与继承如影随形 264 10.3.1 当方法不再通用 264 10.3.2 覆盖——让众口不再难调 265 10.3.3 ...

    java 程序设计试题及答案(8套合辑)

    C、构造方法不能被程序调用,也不可以重载。 D、一个类只允许有一个构造方法。 8.若需要定义一个类域或类方法,应使用哪种修饰符? A、static B、package C、private D、public 9.如要抛出异常,应用下列哪...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    10.2.4 调用父类中的构造方法 256 10.2.5 对象也会“变脸” 258 10.2.6 遵守语法,正确“变脸” 262 10.3 覆盖——与继承如影随形 264 10.3.1 当方法不再通用 264 10.3.2 覆盖——让众口不再难调 265 10.3.3 ...

    常见JAVA基础_4

    Java中的继承有几种类型?试举例说明。 2。方法的继承,方法的覆盖,方法的重载各指的是什么?试举例说明。 3。子类中的父类成员何时初始化? 4。有CommonEmployee类和Manager类从Employee类继承,它们各包含一个...

    JAVA语言程序设计【高清版】.pdf

    77 5.5.1 static 77 5.5.2 final和abstract 79 5.5.3 this和super 84 5.6 方法重写 86 5.6.1 方法重写概述 86 5.6.2 应用重写的规则 89 5.6.3 调用父类构造方法 89 5.7 接口 90 5.7.1 多重继承中的...

    java编程练习题

    要求在第一个构造方法中调用第二个构造方法。该类还有两个重载的move()方法,其中一个无参,在屏幕上输出一行文字: XXX Moving!!(XXX为该动物的名字);另一个需要一个int参数n,在屏幕上输出n次 XXX Moving!! 4,写...

    Java入门教程(微学苑)-part1

    4.4 调用父类的构造方法 64 4.5 继承中的方法的覆盖和重载 65 4.6 多态和动态绑定 66 4.7 动态绑定 69 4.8 instanceof 运算符 70 4.9 多态对象的类型转换 71 4.10 Java static关键字以及Java静态变量和静态方法 72 ...

    JAVA面试题最全集

    9.Java中访问数据库的步骤,Statement和PreparedStatement之间的区别。 10.找出下列代码可能存在的错误,并说明原因: 二、JSP&Servlet技术 1.描述JSP和Servlet的区别、共同点、各自应用的范围 2.在Web开发中...

    java初学者必看

    7.4.2 默认构造方法 7.4.3 拷贝构造方法 7.4.4 重载构造方法 7.4.5 调用构造方法 7.4.6 初始化块 7.5 包 7.5.1 包的概念 7.5.2 类的导入 7.5.3 包名与目录 7.5.4 静态导入 7.5.5 Java包介绍 7.6 类设计...

    java经典面试2010集锦100题(不看你后悔)

    C) 子类继承父类,如果父类中只有一个构造方法并且有参数,那么在子类的构造方法中必须先用super调用父类构造方法并传参。 D) 以上说法都不正确。 题目11:d 程序如下: class Test { private int day; public int...

    java 面试题 总结

    子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。...

    java面试800题

    "类的初始化过程 当创建一个对象时,对象的各个变量根据其类型被设置为相应的默认初始值,然后调用构造方法,而每次调用构造方法都是要执行三个阶段: 1.调用超类的构造方法; 2.由初始化语句对给变量进行初始化...

    【04-面向对象(上)】

    •子类扩展了父类,将可以获得父类的全部属性和方法,但不能获得父类构造器 •Java里的继承都是单继承,也就是只能有一个直接的父类,可以有n个间接父类。 重写父类的方法 •方法的重写要遵循“两同两...

    超级有影响力霸气的Java面试题大全文档

    子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。...

    java自学之道

    4.2 默认构造函数 4.3 显式字段初始化 4.4 构造函数被调用后的详细执行过程 5、包 5.1 创建包 5.2 创建可复用类的步骤简要说明 5.3 包的导入 5.4 包的可见性 接口 6.1 接口的概念 6.2 接口的声明 6.3 接口的...

Global site tag (gtag.js) - Google Analytics