子类可以直接调用父类的函数吗

Posted

tags:

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

子类可以直接调用父类申明为public的方法。
1、若子类重写了父类中的某个函数。
在java中用super.functionName()调用父类方法,用this.functionName()调用子类方法。
在c++中可以用 基类::函数 调用
2、父类未被重写的public 方法可直接调用。
参考技术A 不可以,没有这样的用法或者需求。
子类继承父类,所以子类拥有父类公开的“性质”,因此子类可以调用从父类继承下来的和父类公开的方法。而同一个父类可以有多个子类,并且父类并不知道有什么子类,怎么调用子类的方法呢?

子类为啥要调用父类的构造函数

在Java中,子类的构造过程中,必须 调用其父类的构造函数, 所以说,子类对象比父类对象大,子类对象里面包含了一个父类的对象,这是内存中真实的情况. 构造方法是new一个对象的时候,必须要调的方法,这是规定,要new父类对象出来,那么肯定要调用其构造方法,所以 第一个规则:子类的构造过程中,必须 调用其父类的构造方法 一个类,如果我们不写构造方法,那么编译器会帮我们加上一个默认的构造方法,所谓默认的构造方法,就是没有参数的构造方法,但是如果你自己写了构造方法,那么编译器就不会给你添加了 所以有时候当你new一个子类对象的时候,肯定调用了子类的构造方法,但是在子类构造方法中我们并没有显示的调用基类的构造方法,就是没写,如:super(); 并没有这样写,但是 第二个规则:如果子类的构造方法中没有显示的调用基类构造方法,则系统默认调用基类无参数的构造方法 注意:如果子类的构造方法中既没有显示的调用基类构造方法,而基类中又没有默认无参的构造方法,则编译出错,所以,通常我们需要显示的:super(参数列表),来调用父类有参数的构造函数 参考技术A 第一个 子类要能访问父类继承过来的那一坨信息,必须有地方存储这一坨信息 java中的实现方式是在子类对象内部构建一个父类对象
第二个 为了保证子类中的任何地方都能访问父类,默认会在子类构造器第一行调用父类构造器去构造父类对象 保证子类在自己的构造器中能访问继承的那坨信息
参考技术B 子类继承了父类,同样也继承了父类的成员变量。
所以系统需要先调用父类的构造方法,把父类里的东西创建好,再调用子类的。
参考技术C sun规定的,属于java的语法,没必要深究.话说回来有儿子必须得有父亲,一样个意思 参考技术D 创建对象?

以上是关于子类可以直接调用父类的函数吗的主要内容,如果未能解决你的问题,请参考以下文章

请教,父类中如何调用子类中的虚函数

Python中子类怎样调用父类方法

Python中子类怎样调用父类方法

子类可以继承父类的啥

子类可以继承父类的啥

子类都会首先调用父类的构造函数吗?