java中构造函数和构造方法的区别

Python010

java中构造函数和构造方法的区别,第1张

一般我们讲的"函数"就是"方法"

构造函数=构造方法

构造方法是一种特殊的方法,具有以下特点。

(1)构造方法的方法名必须与类名相同。

(2)构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。

(3)构造方法的主要作用是完成对象的初始化工作,它能够把定义对象时的参数传给对象的域。

(4)一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构造器,这个构造器不执行任何代码。

(5)构造方法可以重载,以参数的个数,类型,顺序。

java构造函数的继承问题//不能继承

(1)子类只继承父类的默认(缺省)构造函数,即无形参构造函数。如果父类没有默认构造函数,那子类不能从父类继承默认构造函数。

(2)子类从父类处继承来的父类默认构造函数,不能成为子类的默认构造函数。

(3)在创建对象时,先调用父类默认构造函数对对象进行初始化,然后调用子类自身自己定义的构造函数。

(4)如果子类想调用父类的非默认构造函数,则必须使用super来实现。

(5)子类必须调用父类的构造函数。可以通过系统自动调用父类的默认构造函数,如果父类没有默认构造函数时,子类构造函数必须通过super调用父类的构造函数。

Q1.java中只要调用子类的无参构造函数就要调用父类无参数的构造函数!

Q2.也不一定。

e.g 如果你子类只调用无参构造方法(没有调用多个参数的构造方法),那么父类的无参构造方法则可有可无,因为系统会帮你生成。

你应该知道,如果子只类定义了一个带有参数的构造方法,那么系统就不会帮你生成无参构造方法。父类也是如此。

不是必须的,在构造函数中,如果第一行没有写super(),编译器会自动插入.但是如果父类没有不带参数的构造函数,或这个函数被私有化了(用private修饰).此时你必须加入对父类的实例化构造.而this就没有这个要求,因为它本身就进行实例化的构造.