0%

java基础之构造器

构造器

学习java对于构造器应该很熟悉,但是有些人会认为构造器不是必要的,这就是对于构造器没有深入的了解。

每一个java类中都必须至少有一个显式或隐式的构造器,很多时候看到类中并没有定义构造器,有人会认为构造器不是必须的,其实那是编译器隐式的提供了一个无参构造器,否则在进行实例化的时候就无法成立

1
Person person = new Person();

如果父类中只有一个有参构造器,而没有无参构造器的话,就需要子类必须提供一个构造器去显式的调用父类的有参构造器方法,否则就会出现编译错误

1
There is no default constructor available in 'com.zhanghe.study.duotai.Parent'

这里就验证了在子类构造器中会隐式的调用父类构造器(super()),而此时没有无参构造器了,就会出现异常

建议如果添加构造器的话保留一个无参构造器

注意:在构造器中的第一条语句要么是调用父类的构造器(使用super()),要么是调用本类中的另一个构造器(使用this());而且如果使用super()或this()语句的话,就必须是构造器的第一条语句,否则编译器就会报错,是为了让父类中的变量在使用前被正确的初始化