类的三种成员与继承

对于类而言,一共有三种成员类型,分别为private,protected,public.
其中,如果数据成员的类型为private,可以默认不写。
对于在类外使用的情况,private和protected是一致的,均不可以由外部直接访问,而public所包含的成员是可以由外部直接访问的。下面给出一个基本的例子。

12345678910111213141516171819202122
class Time {	private:		int hour;		int minute;	protected:		int second;	public:		Time(); //构造函数		showtime();		get_hour();};

int main() //测试函数{	Time A;	A.showtime(); //调用了公有成员,合法	cout<<A.hour; //调用了私有成员,不合法	cout<<A.second; //调用了保护成员,不合法	A.get_hour(); //调用了公有成员,合法	return 0;}

而对于私有成员和保护成员的区别,需要在继承的时候才能体现出来

类的继承类型

通过基类派生出新类的过程称为类的继承,类的继承同样也有private,public,protected三种形式。现在分述如下:

public继承

该种继承方式下,满足如下表格:

基类中的访问限定 派生类对基类成员的限定 外部函数访问
public public 可直接访问
protected protected 不可直接访问
private 不可直接访问 不可直接访问

请注意,基类中的protected类型是可以在派生类中直接访问的

private继承

该种继承方式下,满足如下表格:

基类中的访问限定 派生类对基类成员的限定 外部函数访问
public private 不可直接访问
protected private 不可直接访问
private 不可直接访问 不可直接访问

这里相当于将基类的所有成员变成了派生类的私有成员

protected继承

该种继承方式下,满足如下表格:

基类中的访问限定 派生类对基类成员的限定 外部函数访问
public protected 不可直接访问
protected protected 不可直接访问
private 不可直接访问 不可直接访问

结合上述过程可以看出,private类型和protected类型在派生类中的区别,即protected类型是一种外部无法直接调用,但可以由派生类直接调用的成员类型

原文:大专栏  类的三种成员与继承

原文地址:https://www.cnblogs.com/dajunjun/p/11642953.html

时间: 2024-08-26 23:07:11

类的三种成员与继承的相关文章

20151015_系统分析阶段分析类的三种类型

在系统分析阶段将分析类分为三种类型:实体类.界面类.控制类. 1.实体类 实体类主要是作为数据管理和业务逻辑处理层面上存在的类别: 它们主要在分析阶段区分 实体类的主要职责是存储和管理系统内部的信息,它也可以有行为,甚至很复杂的行为,但这些行为必须与它所代表的实体对象密切相关 基本信息 上述给出的实体类的定义是比较抽象的.类具有继承和递归的特点,实体类可以在抽象类的基础上进一步定义具体的类 实体类是用于对必须存储的信息和相关行为建模的类.实体对象(实体类的实例)用于保存和更新一些现象的有关信息,

子类继承基类的三种继承方式

在C++中,子类继承父类有三种继承方式,分别是:public, protected和private.子类继承的方式不同,那么子类对象访问父类中的参数访问权限也不同. public 方式继承:基类的private成员派生类不可见,基类中的protected和public成员在派生类中可以直接使用,并且变成了派生类中相应                        的protected成员和public成员,但是只有public成员可以在派生类外使用. protected 方式继承:基类的priv

Java中 实现多线程成的三种方式(继承,实现,匿名内部类)

------------------------------------------------------------------------------------------------------------ /** 第一种方式:继承Thread类 *             1. 定义一个类,然后让该类继承Thread类 *             2. 重写run方法 *             3. 创建定义的这个类的对象 *             4. 启动线程 */ //继承

python类的三种方法

一.先看语法,python 类语法中有三种方法,实例方法,静态方法,类方法. ps.python中self,cls的区别 普通实例方法,第一个参数需要是self,它表示一个具体的实例本身.如果用了staticmethod,那么就可以无视这个self,而将这个方法当成一个普通的函数使用.而对于classmethod,它的第一个参数不是self,是cls,它表示这个类本身. # coding:utf-8 class Foo(object): """类三种方法语法形式"&

C++ 中string类的三种模拟实现方式

1.原始版本(拷贝构造和赋值运算符重载时,需要重新开辟空间) #include <iostream> #include <string> using namespace std; class String { friend ostream& operator<<(ostream& os, const String& S); public: String(char* str = "") :_str(new char[strlen

持久化类的三种实例状态

一个持久化类的实例可能处于三种不同状态中的某一种.这三种状态的定义则与所谓的持久化上下文(persistence context)有关.hibernate的session对象就是这个所谓的持久化上下文. 瞬态:该实例从未与任何持久化上下文关联过.它没有持久化标识(相当于主键值). 持久化:实例目前与某个持久化上下文有关联.它拥有持久化标识(相当于主键值),并且可能在数据库中有一个对应的行.对于某一个特定的持久化上下文,hiberanate保证持久化标识与java标识(其值代表对象在内存中的位置)

02-Hibernate实体类的三种状态

一.Hibernate的实体类有三种状态 Transient:瞬时状态,不被hibernate session管理,而且实体数据在数据库不存在 Persistent:持久化状态,被session管理,此时的对象被放在session的缓存中,实体对象存在数据库中. Detached:离线状态,实体对象在数据库中有数据与之对应,但是不被session管理 注意:被session所管理的实体对象,当对象的属性发生改变,在提交事务的时候会自动更新改变后的属性到数据库中. 下图是hibernate试题对象

File类的三种构造方法

1 package cn.zmh.File; 2 3 import java.io.File; 4 /* 5 * 6 * File类的构造方法 三种重载形式 7 * 8 * */ 9 public class FileDemo1 { 10 public static void main(String[] args) { 11 fun2(); 12 } 13 //3 传递 父路径 子字符串路径 14 // 好处 父路径 File类型 父路径就可以直接调用File类的方法 ***** 15 publ

java 复用类的三种方式区别 组合,继承,代理的区别

1. 组合 : 只需在新类中产生现有类的对象 .(is - a 有一个) 新类是由现有类的对象组成. (引用初始化与作用域?) 2. 继承 : 按照现有类的类型来创造新类. (has - a 有一个)无需改变现有类的形式,采用现有类的形式并在其中添加新代码.3. 代理 : 我们将一个成员对象置于所要构造的类中(就像组合),但与此同时我们在新类中暴露了该成员对象的所有方法(就像继承)