আমি এটি এইভাবে মনে করি
+----------------+
| super |
+----------------+ <-----------------+
| +------------+ | |
| | this | | <-+ |
| +------------+ | | |
| | @method1() | | | |
| | @method2() | | | |
| +------------+ | | |
| method4() | | |
| method5() | | |
+----------------+ | |
We instantiate that class, not that one!
নীচে কী আছে তা প্রকাশ করতে আমাকে সেই সাবক্লাসটি কিছুটা বাম দিকে সরানো যাক ... (মানুষ, আমি ASCII গ্রাফিক্স পছন্দ করি)
We are here
|
/ +----------------+
| | super |
v +----------------+
+------------+ |
| this | |
+------------+ |
| @method1() | method1() |
| @method2() | method2() |
+------------+ method3() |
| method4() |
| method5() |
+----------------+
Then we call the method
over here...
| +----------------+
_____/ | super |
/ +----------------+
| +------------+ | bar() |
| | this | | foo() |
| +------------+ | method0() |
+-> | @method1() |--->| method1() | <------------------------------+
| @method2() | ^ | method2() | |
+------------+ | | method3() | |
| | method4() | |
| | method5() | |
| +----------------+ |
\______________________________________ |
\ |
| |
...which calls super, thus calling the super's method1() here, so that that
method (the overidden one) is executed instead[of the overriding one].
Keep in mind that, in the inheritance hierarchy, since the instantiated
class is the sub one, for methods called via super.something() everything
is the same except for one thing (two, actually): "this" means "the only
this we have" (a pointer to the class we have instantiated, the
subclass), even when java syntax allows us to omit "this" (most of the
time); "super", though, is polymorphism-aware and always refers to the
superclass of the class (instantiated or not) that we're actually
executing code from ("this" is about objects [and can't be used in a
static context], super is about classes).
অন্য কথায়, জাভা ভাষার নির্দিষ্টকরণ থেকে উদ্ধৃতি :
ফর্মটি super.Identifier
উল্লেখ করা ক্ষেত্রকে বোঝায়Identifier
বর্তমান অবজেক্টের , তবে বর্তমান শ্রেণীর সুপারক্লাসের উদাহরণ হিসাবে দেখা বর্তমান অবজেক্টের সাথে।
ফর্মটি বর্ণিতভাবে সংযুক্ত উদাহরণের সাথে সম্পর্কিত T.super.Identifier
ক্ষেত্রটির উল্লেখ করে তবে এর সাথে সুপারক্লাসের উদাহরণ হিসাবে দেখা যায় ।Identifier
T
T
সাধারণ ব্যক্তির ভাষায়, this
মূলত একটি অবজেক্ট (* ** অবজেক্ট; আপনি একই ধরণের অবজেক্টে ভেরিয়েবলে ঘুরতে পারেন), ইনস্ট্যান্টিয়েটেড ক্লাসের উদাহরণ, ডেটা ডোমেনে একটি স্পষ্ট পরিবর্তনশীল; super
কোডটি ধার করা ব্লকের পয়েন্টারের মতো যা আপনি কার্যকর করতে চান, আরও নিছক ফাংশন কলের মতো এবং এটি শ্রেণীর যেখানে এটি বলা হয় তার সাথে সম্পর্কিত।
অতএব আপনি যদি super
সুপারক্লাস থেকে ব্যবহার করেন তবে সুপারডুপার শ্রেণি [পিতামহ] মৃত্যুদন্ড কার্যকর করা হয়েছে) থেকে কোড পান, যদি আপনি this
একটি সুপারক্লাস থেকে ব্যবহার করেন (বা যদি এটি স্পষ্টভাবে ব্যবহার করা হয়) তবে এটি সাবক্লাসের দিকে ইশারা করে রাখে (কারণ কেউই এটি পরিবর্তন করেনি - এবং কেউই) পারে)।