class Init{ public function a(){} protected function b(){} private function c(){} private function test(){ obj = new Init; obj->a(); // OK obj->b(); // OK obj->c(); // OK } } class b extends Init{ function(){ obj = new Init; obj->a(); // OK obj->b(); // OK // no private } } class a{ function(){ obj = new Init; obj->a(); // OK // no protected // no private } }