关于继承中的构造方法之前心里有一些混乱,所以特别在此整理一下,希望对大家有所帮助!!
再说构造方法之前不得不说一下继承了,继承是什么呢?
继承:把一些大量重用的,一些公有的信息存放在一个单独的类中(即父类),子类调用其中的公有信息即可。
下面我们开始具体说一下构造方法。
1:----------------------------------------------------------------------------------------------
父类的无参构造方法之所以被执行,是因为java规定,子类在构造之前必须先构造父类。
事实上,子类的构造方法中是必须要通过super关键字来调用父类的构造方法的,这样才可以保证妥善的初始化继承自父类的成员变量。
如果子类的构造方法中没有调用父类的构造方法,则java编译器自动的加入。
代码示例:
super关键字必须位于子类构造方法的第一行,否则会有编译错误
- public TetrominoT(int row, int col) {
- super ( ) ;
- cells[0] = new Cell(row, col);
- cells[1] = new Cell(row, col + 1);
- ……
- }
2:————————————————————————————————————————————
若父类没有提供无参的构造方法,则会出现编译错误
示例:
针对上面的问题,可以有两种解决方案,
- class Foo { //父类
- int value;
- Foo(int value) {
- this.value = value;
- }
- }
- class Goo extends Foo { //子类
- int num;
- Goo(int num) {
- this.num = num;
- }
- }
方案一:
在父类中添加无参的构造方法。
方案二:
在子类构造方法中显示调用父类的有参构造方法(常常使用),这样可以保证父类的成员变量均被初始化
代码如下:
这是我第一次写博客,不足之处大家多多谅解,之后我会继续努力的,争取一天一个知识点!!!
- class Goo extends Foo {
- int num;
- Goo(int value, int num) {
- super(value);
- this.num = num
- }
- }
谢谢大