[技術討論] OOP Inheritance

本帖最後由 852青年 於 2016-12-28 11:57 編輯
The extended or derived class has all variables and functions of the base class

想問一下 Admin extends User 是切切實實複制了所有User的代碼到Admin, 還是純粹引用User?
應該是 圖1 的理解才是正確?
圖1

圖2
  1. <?php
  2. class User {
  3.   public $name;
  4.   public $email;

  5.   public function __construct($name, $email) {
  6.     $this->email = $email;
  7.     $this->name = $name;
  8.   }
  9. }
  10. ?>
複製代碼
  1. <?php
  2. class Admin extends User{
  3.   public $permission;
  4. }
  5. ?>
複製代碼
附件: 您需要登錄才可以下載或查看附件。沒有帳號?註冊

圖2理解先正確
其實冇話複制定引用
總之每create一個admin object就會有齊3個variable

TOP

OK 多謝你解答先

TOP

可以咁諗
admin會有齊user嘅所有內容(code)
亦會有佢獨有嘅部份

TOP

可以咁諗
admin會有齊user嘅所有內容(code)
亦會有佢獨有嘅部份
yjfoeg 發表於 2016-12-28 17:20



    呢個討論係 composition vs inheritance 喎

TOP

切切實實複制了所有User的代碼到Admin

你係邊個層面討論先?
功能?code?編譯完?實際run 個時?

TOP

concept錯了, 這個是compile層面的實作的方式。唔關code level事

TOP

本帖最後由 7h1r733n 於 2017-1-26 21:20 編輯

compiler level黎講.. method佢係直接call parent.. 唔係clone的.
property係直接reference parent個pointer

TOP

abstract 左佢

TOP

本帖最後由 oncepw 於 2017-1-27 05:31 編輯

OOP is talking about the instance of a TYPE.
In your case Admin extends User, it means there is a new TYPE created that is not Admin nor User. The new TYPE is a actually Admin + User combing together, or you may say Admin is a subset of User.

both of your graphs are wrong, the correct way of showing the graph is User containing Admin (Admin extends User)
附件: 您需要登錄才可以下載或查看附件。沒有帳號?註冊

TOP

相關文章