abstract class ApplicationInfo { protected $name_; protected $address_; } class FranchiseeApplicationInfo extends ApplicationInfo { public function getName() { return $name_; } public function setName($name) { $name_ = $name; } public function getAddress() { return $address_; } public function setAddress($address) { $address_ = $address; } } interface IEnquiryManagement { public function accept(ApplicationInfo $appln); } class FranchiseeEnquiryManager implements IEnquiryManagement { public function accept(ApplicationInfo $appln) { $appln->getName(); } } $appln = new FranchiseeApplicationInfo(); $appln->setAddress('this is a sample address'); $appln->setName('venky'); try { $s = new FranchiseeEnquiryManager(); $s->accept($appln); } catch (Exception $e){ print $e->getMessage(); }