我的github

因为java默认函数是虚函数,都可以被继承和重写。不想被重写需要加上final关键字。

参考:

C++ 中普通成员函数加上 virtual 关键字就成为虚函数。

Java 中其实没有虚函数的概念,它的普通函数就相当于 C++ 的虚函数,动态绑定是 Java 的默认行为。如果 Java 中不希望某个函数具有虚函数特性,可以加上 final 关键字变成非虚函数。

参考:https://www.runoob.com/note/40084

参考2:https://www.jianshu.com/p/baaff02a8b5f

参考3:https://wenku.baidu.com/view/1ab839bc4a649b6648d7c1c708a1284ac85005fb.html

所以C++默认函数是不能被重写的?只要加上virtual的函数才可以被子类重写?

参考4:https://blog.csdn.net/sugarbliss/article/details/106179220虚函数和纯虚函数的区别:虚函数可以被子类重写,纯虚函数则必须被子类重写,因为纯虚函数的父类不能自己实现,也就是包含纯虚函数的类是抽象类,也就是说C++里的纯虚函数和抽象类,类似于java里的abstract抽象函数和抽象类

参考5:https://blog.csdn.net/weixin_39408343/article/details/104909732

参考6:https://blog.csdn.net/sugarbliss/article/details/106179220(基类的构造函数不能定义为虚函数,因为如果是虚函数,那么将有可能由子类来实现其构造方法,但是编译器无法确定到底该类有没有子类。因为父类是在子类创建之前先创建的,所以无法确定有没有子类以及子类的类型,将从而将导致陷入不确定危机。)(但是,基类的析构函数可以定义为虚函数,并且应该定义为虚函数,因为对象销毁时,其基类的子类类型已确定,所以销毁基类指针时,销毁基类的析构函数,就会销毁其子类的对象的析构函数,这是对的。否则,销毁基类指针时,将会只调用基类的析构函数

posted on 2023-08-16 13:21  XiaoNiuFeiTian  阅读(36)  评论(0编辑  收藏  举报