子类可以继承父类的啥

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了子类可以继承父类的啥相关的知识,希望对你有一定的参考价值。

参考技术A

子类可以获得除private权限以外的所有父类属性,但是:

1、在子类继承父类的时候,子类必须调用父类的构造函数。

2、如果父类有默认构造函数,子类实例化时自动调用,但如果父类没有默认构造函数,即无形参构造函数,子类构造函数必须通过super调用父类的构造函数。

3、还有在java的继承当中子类是不可以继承父类的构造函数只能调用,这是肯定的。

扩展资料:

1、子类拥有父类得特征,而父类没有,父类更通用,子类更具体,(特征包括属性和方法,自身的特性,拥有父类没有的)。

2、使用extends继承父类,语句格式:class 子类名 extends 父类名。

3、父类中一般只定义一般属性和方法(这个一般可以理解为是子类共有的,这就是父类更通用,而子类拥有其他的,所以子类更具体)。

4、子类中通过super关键字来调用父构造方法。

5、在子类中可以继承父类得那些东西,哪些不可以继承父类中public,protected修饰的属性,方法可以继承,private修饰的属性和方法不能被继承。

6、规则: 创建子类对象的时候,首先调用的是父类的无参构造方法创建一个父类对象

7、可以在子类中显示调用父类的有参构造方法。

8、如果父类的属性均为private修饰,则可以通过共有的getter,setter方法来调用。

有些编程语言支持多重继承,即一个子类别可以同时有多个父类别,比如C++编程语言;而在有些编程语言中,一个子类别只能继承自一个父类别,比如Java编程语言,这时可以利用接口来实现与多重继承相似的效果。

现今面向对象程式设计技巧中,继承并非以继承类别的“行为”为主,而是继承类别的“型态”,使得元件的型态一致。另外在设计模式中提到一个守则,“多用合成,少用继承”,此守则也是用来处理继承无法在执行期动态扩充行为的遗憾。

参考资料来源:百度百科-继承

C++中,子类会继承父类的虚函数表!对于父类的析构函数(虚函数) 也会继承吗?

一个子类继承了父类的虚函数表,而且父类的析构函数是虚函数,那么这个虚函数会放到父类的虚函数表中吗?子类继承时,这个虚函数表中是否有父类的析构函数?如果继承了这个父类的析构函数,那么子类的析构函数也是虚函数的时候,子类的虚函数是否会替换父类的虚函数。如果不替换,那么子类在使用调用析构函数时,是直接调用虚函数表中的子类析构函数吗?如果子类的的虚函数表中有父类的析构函数,看起来这个父类析构函数的存在似乎没有任何意义!!!……求大神解答!!!

上面的问题,楼上已经回答啦!我来说说这个意义吧!
如果子类的的虚函数表中有父类的析构函数,看起来这个父类析构函数的存在似乎没有任何意义!!
类是否需要一个虚析构函数?
如果一个类,有子类那么这个类就应该需要一个虚析构函数。虚函数也只有在继承的时候才会有用的。
说个例子:
class A
string t;
;
class B:A
string s;
;
int main()
A* bp=new B; //这句话是没有问题的吧!
delete bp; //但是这句话就会报错啦、除非你在A里面加上虚析构函数。
return 0;
这个就是他的意义吧!这个例子不是我原创的,来自《c++沉思录》
参考技术A 只要是父类的函数, 子类都会继承, 包括折构函数

而父类的函数是虚构函数的时候, 子类如果不重新定义该函数, 则正常继承. 否则覆盖了父类的盖函数

回到你的问题, 如果父类折构函数是虚函数, 子类继承的时候, 其折构函数首先默认是父类的折构函数, 如果子类重新定义了折构函数, 那就不再使用父类的, 但函数名字不变.

折构函数 是指 可以被子类重定义; 折构函数 是实现一个功能的函数. 2个层次不一样.追问

谢谢!……您的意思是当子类继承父类的虚析构函数时,子类的虚函数表中会有这个父类是析构函数 的,不过您说当子类重新定义虚析构函数时,子类不在使用父类的析构函数 的意思是 子类的虚函数表中 多了一项子类的虚函数地址还是说虚函数表中原来父类的虚函数地址 被子类的替代了???

参考技术B 不会自己创

以上是关于子类可以继承父类的啥的主要内容,如果未能解决你的问题,请参考以下文章

简述在类的继承关系中,子类可以继承父类的都有哪些成员

父类上的注解能被子类继承吗

java中一个子类是不是可以继承父类的构造方法

子类从父类继承过来的方法可以操作子类自己定义的成员变量吗

子类可以继承到父类上的注解吗

JAVA中,子类将继承父类的所有属性和方法吗?为啥?