C++中可以实现多继承,但不推荐使用多继承
在java中只有单继承,没有多继承,这样的代码更可靠。
在C++中
所有类都直接或间接继承object类,换句话说,如果不写extends,默认继承object类。
1.在子类中调用从父类继承过来(不包括private)的成员变量、方法都super 。下面以变量为例:
PS:在子类和父类不重名的情况下,也可以不加super。但是为了理解代码更清楚,调用父类的一律加super关键字。
在C++中,创建一个子类对象时也会创建一个父类对象,并且先调用父类的构造函数,再调用子类的构造函数。
在java中也一样,看一个例子
2. 为什么在“java学习笔记(七)”中我们说一旦自定义了有参构造函数后,就要自己再写一个默认的无参构造函数。
先看一个错误例子
子类的无参构造报错是因为,在上文中我们说过子类的构造在第一行默认调用父类的构造函数,那么子类的无参/有参构造就默认调用父类的无参构造,但是我们没写父类的无参构造,所以报错了。写上以后就可以了:
1)子类的无参构造函数
2)子类的有参构造函数
还有一种解决方法,就是让子类显示调用父类的有参。
面试题总结: