⊗ppOpIhPPP 33 of 107 menu

PHP-তে OOP-তে উত্তরাধিকারের সময় ব্যক্তিগত বৈশিষ্ট্যের সমস্যা

ব্যক্তিগত বৈশিষ্ট্যগুলি উত্তরাধিকার সূত্রে প্রাপ্ত নয়这一事实 একটি অপ্রত্যাশিত সমস্যার দিকে নিয়ে যেতে পারে। এর একটি উদাহরণ দেখা যাক। ধরুন আমাদের নিম্নলিখিত প্যারেন্ট ক্লাস আছে একটি ব্যক্তিগত বৈশিষ্ট্য সহ:

<?php class User { private $age; public function setAge($age) { $this->age = $age; } public function getAge() { return $this->age; } } ?>

ধরুন চাইল্ড ক্লাসে আমরা সিদ্ধান্ত নিয়েছি একটি পদ্ধতি তৈরি করতে যা বয়স বাড়াবে এক দ্বারা। যাইহোক, প্যারেন্টের ব্যক্তিগত বৈশিষ্ট্য পরিবর্তনের চেষ্টা একটি ত্রুটির দিকে নিয়ে যাবে:

<?php class Student extends User { public function incAge() { $this->age++; // ত্রুটি } } ?>

ত্রুটি অদৃশ্য হয়ে যাবে যদি চাইল্ড ক্লাসে ব্যক্তিগত বৈশিষ্ট্য $age ঘোষণা করা হয়:

<?php class Student extends User { private $age; public function incAge() { $this->age++; } } ?>

এখানেই একটি ফাঁদ আমাদের জন্য অপেক্ষা করছে! বাস্তবে আমরা দুটি ব্যক্তিগত বৈশিষ্ট্য তৈরি করেছি: একটি প্যারেন্টে এবং অন্যটি চাইল্ডে। এবং তারা সম্পূর্ণ স্বাধীনভাবে কাজ করে। এর মানে হল যে প্যারেন্টের পদ্ধতিগুলি এর নিজস্ব বৈশিষ্ট্য পরিবর্তন করবে, এবং চাইল্ডের পদ্ধতিগুলি - এর নিজস্ব।

এই সমস্যার আসলে একটি সমাধান আছে। কেবল প্যারেন্টের ব্যক্তিগত বৈশিষ্ট্যগুলি নিয়ন্ত্রণ করতে হবে সেই প্যারেন্টের পদ্ধতিগুলির মাধ্যমে। আসুন আমাদের কোডটি এটি অনুসারে পুনরায় লিখি:

<?php class Student extends User { public function incAge() { $age = $this->getAge(); $age++; $this->setAge($age); } } ?>

সরলীকরণ করা যেতে পারে:

<?php class Student extends User { public function incAge() { $this->setAge($this->getAge() + 1); } } ?>

নিম্নলিখিত কোডে, চাইল্ড ক্লাসে প্যারেন্টের পদ্ধতিটি ওভাররাইড করা হয়েছে। এই কোডের সমস্যাগুলি সংশোধন করুন:

<?php class User { private $name; public function setName($name) { $this->name = $name; } public function getName() { return $this->name; } } class Employee extends User { public function setName($name) { if (strlen($name) > 0) { $this->name = $name; // ত্রুটি } } } ?>
বাংলা
AfrikaansAzərbaycanБългарскиБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
আমরা সাইট পরিচালনা, বিশ্লেষণ এবং ব্যক্তিগতকরণের জন্য কুকি ব্যবহার করি। ডেটা প্রক্রিয়াকরণ গোপনীয়তা নীতি অনুযায়ী করা হয়।
সব গ্রহণ করুন কনফিগার করুন প্রত্যাখ্যান করুন