c++基础 之 面向对象特征一 : 继承

原创 2013年09月17日 00:22:00
class Base
{
public:
void f()
{
cout<<"void f()"<<endl<<endl;
}
void f(int i)
{
cout<<"void f(int)"<<endl<<endl;
}
void h()
{
cout<<"void h()"<<endl<<endl;
}
void g(char s)
{
cout<<"void g(char)"<<endl<<endl;
}
protected:
private:
};


class Devie1 : public Base
{
public:
void h() // 重定义 覆盖父类的h()
{
cout<<"Devie1 void h()"<<endl<<endl;
}

protected:
private:
};


class Devie2 : public Base
{
public:
void f()// 重定义 覆盖了父类的所有重载函数 f() f(int a)
{
cout<<"Devie2 void f()"<<endl<<endl;
}
void g() // 隐藏 父类的 g(char s)
{
cout<<"Devie2 void g()"<<endl<<endl;
}
protected:
private:

};

int _tmain(int argc, _TCHAR* argv[])
{
Base b;
b.f();
b.f(2);
b.g('3');
b.h();


Devie1 d1;
d1.f(1);//继承
d1.f();//继承
d1.g('1');//继承
d1.h();//覆盖


Devie2 d2;
d2.f();//覆盖 
//找不到Base::f(int) 被隐藏  覆盖父类的 f() 
d2.g();//隐藏
//找不到父类的Base::g(char s) 被隐藏
d2.h();//继承
//可以看出,若子类没有重定义父类的操作,子类会调用父类的函数。
//如果子类重定义,分两种情况:
//1.子类重定义父类的函数,返回值和参数列表一致,此为 覆盖  override
//子类和基类一样可以发相同的消息,但是子类表现出不同于父类的行为。。。。
//2.子类重定义了父类的成员函数,但是修改了返回值或者参数列表,此为隐藏 name hiding 
//子类重定义父类的重载函数 时 将导致该函数的所有版本在子类中被自动隐藏。。。
//d1.f()先在子类找f() 找不到再到父类找,如果在子类找到了就使用了。。。

//替代原则:向上类型转换
//在任何需要基类对象(指针)的地方,都可以用子类的对象(指针)来代替








return 0;
}

//可以看出,若子类没有重定义父类的操作,子类会调用父类的函数。
//如果子类重定义,分两种情况:
//1.子类重定义父类的函数,返回值和参数列表一致,此为 覆盖  override
//子类和基类一样可以发相同的消息,但是子类表现出不同于父类的行为。。。。
//2.子类重定义了父类的成员函数,但是修改了返回值或者参数列表,此为隐藏 name hiding 
//子类重定义父类的重载函数 时 将导致该函数的所有版本在子类中被自动隐藏。。。
//d1.f()先在子类找f() 找不到再到父类找,如果在子类找到了就使用了。。。

//替代原则:向上类型转换
//在任何需要基类对象(指针)的地方,都可以用子类的对象(指针)来代替

相关文章推荐

Java基础笔记 – 面向对象三个特征 继承、封装、多态及编程细节提示

Java基础笔记 – 面向对象三个特征 继承、封装、多态及编程细节提示     面向对象三个特性:继续(Inheritence)、封装(Encapsulation)、多态(Polymo...

【java基础】--(2)面向对象特征之概念、封装、继承

1、面向对象: 将事物抽象成类和对象,由于对象具有自己的状态和行为,程序通过对象对消息的反映来完成特定的任务。 2、封装 2.1、定义: 隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中...

我与python约个会:25. 企业级开发基础6:面向对象特征(继承)

面向对象程序设计最主要的有三个特征:封装、继承、多态 本节内容主要讲解面向对象的第一个特征:继承 1 继承的意义 继承是让我们抽象的对象之间存在一定的所属关系 在继承关系中,我们一...

Java基础(极客)——12、Java面向对象基本特征:继承

package com.zhh.java.jicheng; /**  * 1、Java继承的实现  * 继承就是扩展父类功能  * 子类可以调用父类的方法和属性,子类具备父类的所有,子类的一切都上...

java零基础入门知识2.2——继承(面向对象的特征之一)

继 承(面向对象特征之一) 好处: 1:提高了代码的复用性。 2:让类与类之间产生了关系,提供了另一个特征多态的前提。   父类的由来:其实是由多个类不断向上抽取共性内容而来的。 java...

c++面向对象三大特征封装、继承和多态知识总结

面向对象三大特征:封装,继承,多态; 一、封装:该公开的就公开话,该私有的就隐藏掉,主要是由public,private实现;作用是便于分工和分模块,防止不必要的扩展; 二、继承:就是一种传承,可以把...
  • uestclr
  • uestclr
  • 2016年06月05日 18:23
  • 2461

【c++笔记十一】面向对象三大特征之《封装》与《继承》

本文你将学到: 1.认识什么是继承。 2.了解了继承的语法,特别需要三种继承方式的不同。 3.强调了构造函数,析构函数,拷贝构造函数和赋值运算符的调用顺序问题。 4.什么是名字隐藏。 5.多继承以及多...

java基础之面向对象及其基本特征

面向对象:面对对象是相对面向过程来说的。比方说我想吃饭,如果用面向过程的思想思考的话,就是我自己动手去做,做饭就是过程;如果用面向对象的思想来思考的话,就是让女朋友来做饭,我不用做,只管吃就好,此时女...

Java基础_面向对象的基本特征

面向对象的基本特征:封装、继承、多态 1.封装 隐藏具体的内部实现细节,仅向外部提供简单的接口或者方法。 比如,一辆小汽车,隐藏了复杂的机械构造以及发动机工作原理,仅开放启动,油门,刹车...
  • rullyzz
  • rullyzz
  • 2017年01月10日 20:00
  • 49
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:c++基础 之 面向对象特征一 : 继承
举报原因:
原因补充:

(最多只允许输入30个字)