c++的子对象,继承和多态
来源:互联网 发布:js 判断元素隐藏 编辑:程序博客网 时间:2024/06/06 18:48
C++子对象
C++的子对象其实相当于继承的另一种表现方式,一个类要调另一个类的方法,(当然也能够继承),在这个类例如son中数据成员写一个类base的对象m1,在son的构造函数中也要调用base的构造,然后就可以通过类son的对象调用类base的方法。实现代码如下:
#include<iostream>
using namespacestd;
class base
{
private:int x,y;
public :base(intx,int y)
{
this->x=x;
this->y=y;
}
void fun()
{
cout<<x<<endl;
cout<<"这是base的fun!"<<endl;
}
};
class son
{
private:base m1;
int z;
public :son(intz):m1(z-3,z+2)
{
this->z=z;
}
voidfun()
{
m1.fun();
cout<<"这是派生类son的fun!"<<endl;
}
};
int main (void)
{
son s1(3);
s1.fun();
return 0;
}
C++继承
继承的特点就是我继承一个父类(当然也可以继承多个类),父类里的方法、数据成员我就不用在我的类里声明了,直接用,当然如果我的类里和基类有同名函数,调用时就不会调用基类的函数。在我的类里面调用构造时要先调基类的构造。(析构函数的调用顺序严格与构造函数相反)。实现代码如下:
#include<iostream>
using namespacestd;
class base
{
private:int x,y;
public :base(intx,int y)
{
this->x=x;
this->y=y;
}
void fun()
{
cout<<x<<endl;
cout<<"这是基类的fun!"<<endl;
}
};
classwhilst:public base
{
private :int z;
public:whilst(inti):base(i+1,i-3)
{
z=i;
}
void fun()
{
cout<<"这是派生类whilst的fun!"<<endl;
}
};
classbright:public base
{
private:int z;
public :bright(intz):base(z,z+3)
{
this ->z=z;
}
void fun()
{
cout<<"这是派生类bright的fun!"<<endl;
}
};
int main (void)
{
whilst w1(4); //注意一定要初始化
w1.fun ();
bright b1(3);
b1.fun();
return 0;
}
**继承的时候如果派生类有坚决掉派生类的,(不管是不是参数不匹配或是权限够不够,如果不匹配报错),派生类没有,再调用基类的。
C++多态
C++多态和继承是非常相似的,多态就是在继承的基础上实现的,这块要注意的是,继承的时候还是各类的对象在调方法,而多态实现了一个调用会出现不同的结果,此时两个派生类会有同名函数,(同名,同参,同返回,同访问权限),实现代码如下:
#include<iostream>
using namespacestd;
class base
{
private:int x,y;
public :base(intx,int y)
{
this->x=x;
this->y=y;
}
void fun()
{
cout<<x<<endl;
cout<<"这是基类的fun!"<<endl;
}
};
classwhilst:public base
{
private :int z;
public:whilst(inti):base(i+1,i-3)
{
z=i;
}
void fun()
{
cout<<"这是派生类whilst的fun!"<<endl;
}
};
classbright:public base
{
private:int z;
public :bright(intz):base(z,z+3)
{
this ->z=z;
}
void fun()
{
cout<<"这是派生类bright的fun!"<<endl;
}
};
int main (void)
{
base *b1=new whilst(5);//注意一定要初始化,
b1->fun();
delete b1;
b1=new bright(4);
b1->fun();
delete b1;
return 0;
}
- c++的子对象,继承和多态
- c++——继承类中的子对象和基类对象的初始化
- C语言面向对象的封装、继承和多态的思想
- C语言面向对象的思想(实现继承和多态)
- 用c语言实现面向对象的封装继承和多态
- C语言实现面向对象的思想(实现封装、继承和多态)
- C++: 静态成员和子继承
- 继承类中的子对象和基类对象的初始化
- 继承类中的子对象和基类对象的初始…
- C语言也可以“面向对象”—— C语言实现封装、继承和多态
- C继承和多态
- Objective-C 学习笔记 04 - 继承和对象的实例
- PHP 对象继承和多态的实例
- Lua面向对象代码(继承和多态)的读后感
- 对象创建的详细过程,继承和多态
- python类的继承和多态,获取对象信息
- 类继承和子类型 多继承和虚拟继承
- 继承和派生--包含子对象的子类的构造函数
- P.J.Plauger<ctype.h>
- Eclipse 配置maven web项目
- android应用怎么获取系统权限
- Struts2学习笔记(一)搭建struts2
- Some ussful links to an engineer
- c++的子对象,继承和多态
- 《c程序设计语言》读书笔记-4.1-判断字符串在另一个字符串中的位置
- 64位Win7系统在管理员权限下使用chkdsk命令时直接蓝屏死机然后重启的一种解决办法(不一定通用)
- 不断的选择决定命运——见过的比较好的职业规划的文章
- C++ - 扩展欧几里德算法非递归实现
- 字符串为*号和26个字母的任意组合把*号都移动到最右侧,把字母移到最右侧并保持相对顺序不变
- 马士兵struts2视频教程第五十二集
- IA-32
- 学习OpenCV——车牌检测(定位)