自我理解:封装、继承和多态

一、封装

1、概念

  • 封装就是隐藏对象的属性和实现细节,只对外公开一些操作内部属性的方法(接口/函数)

2、目的

  • 增强安全性、简化编程,使用者不必了解具体的实现细节,只需要通过外部接口,就可以对类的内部成员进行操作
class A{
	public:
		A(){} // 构造函数
		~A(){} // 析构函数
		void show(){
			cout << "A的方法" << endl;
		}
};

int main()
{
	A a;
	a.show(); // A的方法
}

二、继承

1、概念

  • 继承就是把已存在的类的定义作为基础建立新类,新类继承了旧类所有的属性和方法,可以增加新的属性和方法,也可以重写父类的方法,但不能选择性地继承父类
  • 类B继承了类A,即类A派生了类B,则称B是A的子类(派生类),A是B的父类(基类)

2、目的

  • 使用继承我们能够非常方便地复用以前的代码,能够大大的提高开发的效率
class A{
	public:
		A(){}
		~A(){}
		void showA(){
			cout << "A的方法" << endl;
		}

};

class B:public A{
	public:
		void showB(){
			cout << "B的方法" << endl;
		}
};

int main()
{
	A a;
	a.showA(); // A的方法

	B b;
	b.showA(); // A的方法
	b.showB(); // B的方法
}

三、多态

1、概念

  • 多态就是一个方法根据对象的不同有会不同的行为方式
  • 常用在,用父类类型的指针指向其子类的实例,然后可以通过父类类型的指针调用实际子类的成员函数

2、目的

  • 大大提高编程的效率和灵活性,不用为了调用多个不同子类的方法,创建多个不同子类类型的指针
class A{
	public:
		A(){}
		~A(){}
		void show(){
			cout << "A的方法" << endl;
		}
};
class B:public A{
	public:
		void show(){ //重写show方法
			cout << "B的方法" << endl;
		}
};
class C:public A{
	public:
		void show(){ //重写show方法
			cout << "C的方法" << endl;
		}
};

int main()
{
	B b; // 子类B的实例
	A *p = &b; // 父类类型的指针,会自动进行类型转换
	p->show(); // B的方法

	C c; // 子类C的实例
	p = &c; // 修改父类类型的指针的指向,再次自动进行类型转换
	p->show(); // C的方法
}

你可能感兴趣的:(计算机基础知识,c++,开发语言)