一、多态性
多态有3个条件
1:继承
2:重写(重写父类继承的方法)
3:父类引用指向字类对象
实例如下:
interface Parent
{
String method();
}
class Child1 implements Parent
{
public String method()
{
return "Child1 ";
}
}
class Child2 implements Parent
{
public String method()
{
return "Child2 ";
}
}
public class Test
{
public static void main(String[] args)
{
Parent parent = new Child1();
System.out.println(parent.method());
parent = new Child2();
System.out.println(parent.method());
}
}
输出结果:
Child1
Child2
只有多个子类从一个父类继承或实现一个接口。 在建立这些子类实例时,都用父类或接口做为变量类型,如上例中的parent。也就
是说,用户对应的接口都是一个Parent。而由于new后面的子类不同,而产生调用同一个方法method返回不同结果的显现叫多态。就
是同一个方法在使用不同子类时有不同的表现(在这里是不同的返回值)。
二、重载
重载是同一个方法名(包括构造函数)的多种不同实现
所谓的不同实现,是指参数的个数或类型的不同,返回类型可同也可不同
三、构造函数
在创建对象时初始化成员变量,开辟内存空间,方法名与类名完全相同
四、析构函数
在使用完对象之后用来销毁,同时释放空间,隐式调用命名方法是构造函数前加一个波浪线
转自:http://blog.163.com/xiexueyong1987@126/blog/static/1262673422009966284294/
分享到:
相关推荐
如果基类的析构函数是虚函数(使用`virtual`关键字声明),那么在多态上下文中,即使通过基类指针删除派生类对象,也会正确调用所有层次的析构函数。如果不声明为虚析构函数,只有基类的析构函数会被调用,这可能...
4. 构造函数不能是虚函数,但析构函数可以,并且通常应该声明为虚函数。这样在删除基类指针指向的子类对象时,能够正确调用子类的析构函数,避免内存泄漏。 向上类型转换(upcasting)是指将子类对象的指针或引用...
构造函数可以调用虚函数吗, 析构函数可... 后置加加(1).pdf 后置加加.pdf 网将模板声明为友元.pdf @静态数据成员(1).pdf 静态数据成员.pdf 拷贝构造函数.pdf 类的继承.pdf 类的组合.pdf 模板.pdf 模板的特化(具体化)...
C++程序设计第9章类和对象 本章主要讲解了类和对象的概念、定义和使用方法。通过本章的学习,读者将理解类和对象的概念,掌握类和对象的定义...同时,读者还了解了构造函数、析构函数和this 指针的概念和使用方法。
构造函数用于初始化对象,而析构函数用于清理对象。构造函数可以自定义,允许在创建对象时执行特定操作,而析构函数则在对象消亡前执行必要的清理工作。 5. **函数重载**:函数重载允许在同一作用域内定义多个同名...
类可以有构造函数(用于初始化对象),析构函数(用于清理资源),以及友元(非成员函数可以访问类的私有和保护成员)。 7. **运算符重载**:C++允许重载运算符,以便为自定义类型赋予自然的运算符行为,如 `+`,`-...
与构造函数类似,析构函数没有返回类型,但它是无参的。 在多态环境中,如果基类的析构函数不是虚函数,那么问题就出现了。当使用基类指针指向派生类对象并尝试销毁它时,编译器只会调用基类的析构函数,而不会调用...
此外,面试官可能还会询问关于构造函数和析构函数的理解,如何使用虚析构函数处理多态对象的销毁,以及如何使用C++的模板、STL(标准模板库)、异常处理等高级特性。这些都要求面试者具备扎实的C++基础和实践经验。 ...
C++是一种强大的面向对象的编程语言,它包含了丰富的特性,如类、构造函数、析构函数、重载运算符、继承、多态等。以下是对题目中涉及的一些知识点的详细解释: 1. **类和成员访问权限**: - 类的定义由说明部分...
可以重载构造函数以支持不同参数的构造。析构函数负责在对象生命周期结束时进行清理工作,如释放资源。析构函数不能被重载,且在C++中是唯一的,无参数。 3. **运算符重载**:运算符重载使得可以为自定义类型定义...
涵盖了C++语言的多个方面,包括构造函数、拷贝构造函数、拷贝赋值函数、const关键字、enum、inline函数、定义域、static变量、初始化、编译器生成的函数、拷贝控制、多态基类、析构函数、虚函数、运算符重载等。...
本资源摘要信息涵盖了面向对象程序设计C++的多个方面,包括类和对象、继承、多态、重载、运算符重载、友元函数、静态成员、构造函数、析构函数、模板编程等。 一、类和对象 * 类是对象的蓝图,描述对象的状态和...
【标签】"javascript Explained js类库 类的编写与应用,构造与析构函数,函数的重载,类的继承,函数覆盖,基类与派生类的构造函数、析构函数先后调用顺序" 在JavaScript中,虽然它不是一种传统的面向对象语言,但...
析构函数的调用顺序与构造函数相反。 多态是面向对象的高级特性,它允许不同类型的对象对同一消息作出响应。在C++中,通过虚函数实现多态。虚函数使得子类可以重写父类的功能,提供自己的实现。多态有两种主要形式...
当通过基类指针删除派生类对象时,如果没有声明虚析构函数,只会调用基类的析构函数,而派生类的析构函数不会被调用,这可能导致资源未被正确释放。而有了虚析构函数,就可以确保通过基类指针调用到正确的析构函数,...
6. 构造函数与析构函数:类对象创建时,系统会自动调用构造函数初始化对象;对象生命周期结束时,系统会调用析构函数清理资源。 7. 数组初始化:当声明一个类类型的数组,如AB a[9],系统会为每个数组元素调用一次...
- `new` 在分配内存后会调用构造函数,`delete` 在释放内存前会调用析构函数。 - `malloc` 和 `free` 不会调用对象的构造或析构函数,因此不适合处理包含非内部数据类型的对象。 2. **delete 和 delete[] 的区别*...
析构函数在C++中可以声明为虚函数,这是非常重要的,因为当使用基类指针删除派生类对象时,如果没有声明虚析构函数,析构函数只会调用基类的版本,导致派生类的资源可能无法正确释放。而构造函数不能声明为虚函数,...
在C++的继承和类设计方面,你需要理解单一继承、多重继承、继承层次结构、访问控制(public、private、protected)、构造函数与析构函数的使用,以及覆盖(override)和隐藏(hiding)的概念。同时,掌握封装和抽象...