1. 程式人生 > >公有繼承,私有繼承,保護繼承的區別

公有繼承,私有繼承,保護繼承的區別

一個子類繼承父類時,可按照public、private和protected方式繼承父類,每種繼承方式的區別如下:

1) public繼承方式

  • 基類中所有public成員在派生類中為public屬性;
  • 基類中所有protected成員在派生類中為protected屬性;
  • 基類中所有private成員在派生類中不可訪問。

2) protected繼承方式

  • 基類中的所有public成員在派生類中為protected屬性;
  • 基類中的所有protected成員在派生類中為protected屬性;
  • 基類中的所有private成員在派生類中仍然不可訪問。

3) private繼承方式

  • 基類中的所有public成員在派生類中均為private屬性;
  • 基類中的所有protected成員在派生類中均為private屬性;
  • 基類中的所有private成員在派生類中均不可訪問。
表1 基類成員在派生類中的的訪問屬性
基類中的成員 在公用派生類中的訪問屬性 在私有派生類中的訪問屬性 在保護派生類中的訪問屬性
私有成員 不可訪問 不可訪問 不可訪問
公用成員 公用 私有 保護
保護成員 保護 私有 保護

不管哪種繼承方式,父類的私有成員都不可以訪問,只有間接的通過公有成員才能獲取到私有成員的值

protected存在的意義是當我不想向外部暴露某個函式或者成員變數,但是我又想讓派生類知道和訪問這個成員,就將其用rotected標誌。
舉例:
你爹有兩筆存款,一筆是他養老用的,一筆是留給你買房的,養老用的這部分錢你肯定不能拿而且大概你也不知道有多少錢,但是給你買房用的你就可以隨便拿,如果你連養老用的這部分錢都拿了那你就是不肖子了,但是你爹可以隨便動給你買房的錢(因為錢是他賺的)。當然,不管是養老用的錢還是給你買房用的錢,外人都不能動而且也不知道。