首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

2023 年 30 个 OOP 面试问题和答案

有哪些不同类型的继承继承可以分为以下5种类型: 单继承: 子类直接从基类派生 多重继承: 子类派生自多个基类。 多级继承: 子类派生自个同时也派生自另个基类的类。...个抽象类可以拥有final、非final、静态和非静态变量。 接口只有静态和最终变量。 抽象类不支持多重继承个接口支持多重继承。 21.个类占用多少内存? 类不使用内存。...什么是析构函数? 析构函数种在对象超出范围或被销毁时自动调用的方法。 C++,析构函数的名称与类名相同,但前缀为(~)波浪线符号。 Python,析构函数的名称为__del__。...我们可以使用finalize()方法作为Java析构函数的替代方法,但自Java 9起该方法也已被弃用。 27. 我们可以个类重载构造函数? 我们可以重载构造函数。...事实上,默认构造函数、带参数的构造函数和拷贝构造函数都是构造函数的重载形式。 28. 我们可以个类重载析构函数? 不。个类不能重载析构函数个类只能有个析构函数存在。 29.

25630
您找到你想要的搜索结果了吗?
是的
没有找到

2023 年 30 个 OOP 面试问题和答案也许可以帮到你

有哪些不同类型的继承继承可以分为以下5种类型: 单继承: 子类直接从基类派生 多重继承: 子类派生自多个基类。 多级继承: 子类派生自个同时也派生自另个基类的类。...个抽象类可以拥有final、非final、静态和非静态变量。 接口只有静态和最终变量。 抽象类不支持多重继承个接口支持多重继承。 21.个类占用多少内存? 类不使用内存。...什么是析构函数? 析构函数种在对象超出范围或被销毁时自动调用的方法。 C++,析构函数的名称与类名相同,但前缀为(~)波浪线符号。 Python,析构函数的名称为__del__。...我们可以使用finalize()方法作为Java析构函数的替代方法,但自Java 9起该方法也已被弃用。 27. 我们可以个类重载构造函数? 我们可以重载构造函数。...事实上,默认构造函数、带参数的构造函数和拷贝构造函数都是构造函数的重载形式。 28. 我们可以个类重载析构函数? 不。个类不能重载析构函数个类只能有个析构函数存在。 29.

30641

Java面试-面向对象

Java,运行时多态性或动态方法分派是个在运行时而不是在编译时解决对覆盖方法的调用的过程。在此过程,将通过超类的引用变量调用重写的方法。让我们看下面的示例,以更好地理解它。...Java的接口是类的蓝图,或者可以说它是抽象方法和静态常量的集合。接口中,每个方法都是公共的和抽象的,但不包含任何构造函数。因此,接口基本上是组带有空主体的相关方法。...Java支持四种继承类型: 单继承继承个类继承个属性,即将只有个父类和个子类。...什么是多重继承?Java支持? 如果子类从多个类继承属性,则称为多重继承。Java不允许扩展多个类。...Java构造函数重载是种将任意数量的构造函数添加到每个具有不同参数列表的类的技术。编译器使用列表的参数数量及其类型来区分重载的构造函数

69220

怎么理解Python类的super函数

前言 Python类的继承,经常能看到super函数的存在,那super函数主要的作用,以及如何理解和使用好这个函数?本次教程将详细讲解,希望大家看到最后,并按照代码实际操作下。...,super函数常常用于子类的构造函数,用于调用父类(超类)的构造函数,并且不会显式引用基类。...__init__() #python3写法 不仅仅是用于构造函数 super函数虽常用于构造函数,但是父类的其他函数样也是可以用super函数的。...根据上面的案例,我们可以看出super函数是直接调用基类的构造函数,但是多重继承样,他是调用继承顺序的下个类,而不是父类。...super函数和直接调用父类方法的区别 继承时,我们看到super和直接调用父类方法得到的结果是样的,只是不会显式引用基类。但多重继承就不要了,我把上面的代码进行了修改,我相信你能看懂区别。

80230

Java培训实战教程之Java基础知识精华部分(四)(五)

而super():是调用父类中空参数的构造函数。 为什么子类对象初始化时,都需要调用父类函数?(为什么要在子类构造函数的第行加入这个super()?)...因为子类继承父类,会继承到父类的数据,所以必须要看父类是如何对自己的数据进行初始化的。 所以子类进行对象初始化时,先调用父类的构造函数,这就是子类的实例化过程。...注意: 子类中所有的构造函数都会默认访问父类的空参数的构造函数,因为每个子构造内第行都有默认的语句super(); 如果父类没有空参数的构造函数,那么子类的构造函数内...如果子类构造函数中用this来指定调用子类自己的构造函数,那么被调用构造函数样会访问父类构造函数。...所以判断所属关系,可以简单看,如果继承后,被继承的类的功能,都可以被该子类具备,那么继承成立。如果不是,不可以继承

41630

Python 编程 | 连载 16 - 类的特性

、类的继承 什么是继承: 通过继承来获得继承的类的功能 被继承的类成为父类,继承类成为子类 可以提高代码的重用率 父类与子类的关系: 子类拥有父类的所有属性和方法 父类不具备子类的独有的属性和方法...,各个子类之间的方法式独立的,父类不能调用子类的方法 super 关键字 Python中子类继承父类的方法而使用的关键字,当子类继承父类后,就可以通过super调用父类的方法,无须传递self参数 class...() Student类继承了Human类和Teacher类,Student类的实例化对象可以调用Human和Teacher的类方法,但是当两个父类存在同名的函数或者构造方法时,优先使用继承的第个父类的函数...01.teach() student_01.breath() Teacher类也增加个breath方法,并且将Student继承时将Teacher放在前面 根据打印结果,Human类的构造方法和...__mro__) Student类先继承的Teacher类,再继承的Human类,最后继承了基类object 二、类的多态 类的多态既同个功能或函数多状态化,子类重写父类的方法即可实现多态 class

25230

C#的继承_继承关系的被继承

当创建个类时,不需要完全重新编写新的数据成员和成员函数,只需要设计个新的类,继承了已有的类的成员即可。这个已有的类被称为的基类/父类,这个新的类被称为派生类/子类。 二....基类和派生类: 基类/父类:也可以理解成生活的父亲,自身有的些属性方法会被继承; 派生类/子类:也就是生活的儿子,自己去继承了基类/父类的属性和方法,当然自身也会拥有自己的属性和方法。...,只有可继承的类成员才可以继承,主要使用访问修饰符进行设置; 继承实质上是对象与对象之间的关系; C#继承只能实现单继承,每个类只能继承个父类,个父类可以拥有多个子类; 继承可以隔代继承,也就是子类下面还可以有子类...; 不允许相互继承(循环继承); C#不允许多重继承,但是可以实现多重接口继承; 五.般写法: class { ... } class : ...: 如果父类构造函数有形参,则子类必须要手写构造函数,并且带有相同的形参(形参的个数类型致即可,不用管顺序,参数的命名),然后子类构造函数之后紧跟着写:base(),base括号的参数代表给父类构造传递的参数

55430

Java 继承学习

个子类亦可以是另个类的超类) class 子类 extends 父类 { …… } 子类也可以被成为“派生类”,父类也被称为基类(超类) 子类继承父类后,子类可以随便的调用父类定义的属性...个子类不可继承多个父类;个子类只有个父类,个子类则可以个被继承的父类。...,属于显式继承” 】(super) 3、 子类对象构造之前,定会默认调用父类的无参构造,以保证父类的对象先实例化,而后实例化子类对象 ; 对于子类构造而言,就相当于隐含了个“super()”—...) super()和this()问题研究: 1、 super(参数):调用基类(父类)的某构造函数(默认) 2、 this(参数):调用本类的另种形成的构造函数 3、 super()和this...()都在构造函数行,但不可以同时存在 4、 super:引用当前对象的直接父类的成员(用来访问父类的隐式继承属性和方法函数) 5、 this:表示引用当前对象名 — this()和super

56420

C++基础知识复习

const class member C++11可以类内给const修饰的变量赋值。 或者 构造函数的初始化列表赋值。 构造函数初始化。...父类的所有成员函数以及数据成员都会被子类继承调用父类的构造函数,再调用子类的构造函数。 ---- 先调用父类的构造函数用来初始化从父类继承来的数据。...---- 调用父类的构造函数子类的构造函数 ,显式调用父类的构造函数。(例如:初始值列表) 没有显示调用父类构造函数,那么会自动调用父类的默认构造函数。...多继承/多重继承个派生类可以有两个或多个积累。...多重继承中小型项目中较少使用。 multiple inheritance Ambiguity_多重继承二义性 ---- 多个父类中有相同成员函数,子类调用时加上类名来区分。指定基类来使用。

51910

Java之继承、抽象类、接口篇

:如果不指明任何权限,则默认同的类可以访问 继承条件下的构造方法调用 首先,看这段代码有什么发现?...:     1).继承父类的时候默认调用父类的无参构造函数,如果父类里面并没有无参的构造函数,那么这里子类的无参构造函数就会报错,如果想要调用有参构造函数的话就要用到super了,显示调用GrandParent...的含参构造函数,而且必须将super()放在子类构造函数里第行。     ...重载(Overloads):子类有父类的同名方法,但两者的参数类型或参数数目不样。 顶层基类Object Java,所有的类都派生自Object,此类定义了下方法: ?...接口基本上不具备继承的任何具体特点,它仅仅承诺了外界能够调用的方法。 个类可以实现若干个接口,但个类只能继承个父类。

1K00

图解python | 面向对象编程

OOP把对象作为程序的基本单元,个对象包含了数据和操作数据的函数。 Python是个纯天然面向对象的编程语言,Python,所有数据类型都可以视为对象。...它定义了该集合每个对象有的属性和方法。对象是类的实例。 方法:类定义的函数。 类变量:类变量整个实例化的对象是公用的。类变量定义函数体之外。类变量通常不作为实例变量使用。...相比其它编程语言,Python的类机制非常简洁,Python的类提供了面向对象编程的所有基本功能 类的继承机制允许多个基类 派生类可以覆盖基类的任何方法 方法可以调用基类的同名方法 对象可以包含任意数量和类型的数据...) 的特殊方法(构造方法/构造函数),该方法类实例化时会自动调用,像下面这样: def __init__(self): self.data = [] 类定义了 __init__() 方法,类的实例化操作会自动调用...例如(代码可以在在线python3环境运行) class Person: #定义基本属性 name = '' age = 0 #定义私有属性,私有属性类外部无法直接进行访问

53741

Java从入门到精通五(Java面向对象下,封装,继承,多态)

子类可以拥有父类的某些属性,注意是某些,不是全部。 继承的方式有多种,单继承,多继承多重继承。java是不支持多继承的。也就是说,你个子类不能继承多个父类,但是多个子可以继承个父类。...必须调用父类的构造函数,如果父类有默认的构造函数,子类实例化会自动调用,如果父类没有声明默认的构造函数的话(无形参构造函数),子类构造函数必须通过super调用父类的构造函数。...另外需要注意的是,子类构造函数必须通过super调用父类的构造函数new()对象的时候,父类构造函数就会自动执行。...所以说,每次new对象的时候这个无参构造方法会自动执行。 那么对于父类的有参构造方法呢?我们还是来看代码。我们父类个有参构造函数,将父类的无参覆盖掉。...子类默认继承父类的属性和方法,但不会继承父类的构造器,而是子类被实例化时会默认调用父类的空构造器。子类创建的时候会调用自己的空构造器,并在空构造器会隐式调用super(),即父类的空构造器。

21930

Java|继承学习总结

概述 继承个类(通常称为子类),去继承个类(通常称为父类)的属性和方法,通过继承子类可以使用父类的属性和方法....两者只能出现次,且必须在构造方法的第行. 继承父与子类的构造方法 1.父子构造均无参数 调用子类实例化时,会自动调用父类的构造方法。...str){ System.out.print1n("父类无参构造函数"); } } 2)需要继承有参构造方法,子类中直接调用 super(父类构造函数参数列表); (注意事项:必须在子类构造方法调用...4.Java 的继承是单继承,但是可以多重继承,单继承就是个子类只能继承个父类,多重继承就是,例如 A 类继承 B 类,B 类继承 C 类,所以按照关系就是 C 类是 B 类的父类,B 类是 A 类的父类...理解:调用抽象类的抽象方法,没有具体的方法体,没有意义。 2.抽象类可以构造方法,子类创建对象时,会自动调用。 理解:子类实例化时原本就会调用父类构造方法,抽象类中样适用。

43630

《JavaScript 模式》读书笔记(6)— 代码复用模式2

通过借用构造函数实现多重继承 当使用借用构造函数模式时,可以通过借用多个构造函数从而简单的实现多重继承。...同时,子对象也能够将任意参数传递到父构造函数。这种行为可能是最接近您希望Java实现的方式。可以继承父对象切东西,同时这种方法也能够安全的修改自身属性,且不会带来修改其父对象的风险。   ...但是,这同时也是个缺点,因为如果在继承链下方的某处存在个子对象或者孙子对象修改了原型,它将会影响到所有的父对象和祖先对象。...在这种情况下,name是父对象有的个属性,然而在继承的时候我们实际上从未调用过new Parent(),因此也从未创建过该属性。...具体实现方式上,可以使用即时函数并且闭包存储代理函数

33810

如何分析和提高(CC++)程序的编译速度?

我们来看看Primer怎么说的 当用于类类型对象时,初始化的复制形式和直接形式有所不同:直接初始化直接调用与实参匹配的构造函数,复制初始化总是调用复制构造函数。...静态局部变量是定义函数内部的,静态局部变量定义时前面要加static关键字来标识,静态局部变量所在的函数调用多次时,只有第次才经历变量定义和初始化; 当个文件或者数据反复使用时,应该存储全局变量...因此,如果代码循环嵌套超过 3 层,建议重新设计循环或将循环内的代码改写成个子函数。...尽量不使用继承多重继承 多重继承增加了类的继承层次的复杂性,调试难度增加当然风险也增加了,而且使用父类指针指向子类对象变成了件复杂的事情,得用到C++中提供的dynamic_cast来执行强制转换。...func2和func3不需要调用析构和构造函数函数func1使用值传递参数传递和函数返回时,需要调用string的构造函数和析构函数两次。

1.3K51

3 :面向对象初级

简单说:哪个对象调用了this所在的函数,this就代表哪个对象。 this也可以用于构造函数调用其他构造函数。 注意:只能定义构造函数的第行。因为初始化动作要先执行。...描述事物时,该事物存在就具备的些内容,这些内容都定义构造函数。  构造函数可以有多个,用于对不同的对象进行针对性的初始化.  多个构造函数是以重载的形式来体现的。...单继承个子类只能有个直接父类。  多继承个子可以有多个直接父类(java不允许,但进行了改良)  不直接支持,因为多个父类中有相同成员,会产生调用不确定性。 ...java是通过"多实现"的方式来体现。 java支持多层(多重)继承。 C继承B,B继承A。  就会出现继承体系。 当要使用继承体系时,  1,查看该体系的顶层类,了解该体系的基本功能。...子父类,成员的特点体现。  1,成员变量。 2,成员函数。 3,构造函数。 子类不能继承父类有的成员变量和方法 1,成员变量。  当本类的成员和局部变量同名用this区分。

71490

Python基础入门_5面向对象基础

它定义了该集合每个对象有的属性和方法。对象是类的实例。 类方法:类定义的函数。 类变量:类变量整个实例化的对象是公用的。类变量定义函数体之外。类变量通常不作为实例变量使用。...Python的类提供了面向对象编程的所有基本功能:类的继承机制允许多个基类,派生类可以覆盖基类的任何方法,方法可以调用基类的同名方法。 对象可以包含任意数量和类型的数据。...; 基类和子类必须定义个作用域内; 下面给出个代码例子,基类定义还是上的 people 类别,这次定义个子类 student # 单继承示例 class student(people):...,即继承个基类的示例,子类的构造方法必须先调用基类(父类)的构造方法: # 调用父类的构造方法 people....__init__(self, n, a, w) 另调用基类的构造方法,利用 super() 函数: super.

45530

《挑战30天C++入门极限》图文例解C++类的多重继承与虚拟继承

图文例解C++类的多重继承与虚拟继承   在过去的学习,我们始终接触的单个类的继承,但是现实生活些新事物往往会拥有两个或者两个以上事物的属性,为了解决这个问题,C++引入了多重继承的概念...,C++允许为个派生类指定多个基类,这样的继承结构被称做多重继承。...举个例子,交通工具类可以派生出汽车和船连个子类,但拥有汽车和船共同特性水陆两用汽车就必须继承来自汽车类与船类的共同属性。   由此我们不难想出如下的图例与代码: ?   ...aird,float tonnage) :Vehicle(weight),Car(weight,aird),Boat(weight,tonnage) //多重继承要注意调用基类构造函数...aird,float tonnage) :Vehicle(weight),Car(weight,aird),Boat(weight,tonnage) //多重继承要注意调用基类构造函数

39710
领券