Негизги айырма – бул Javaдагы суперге каршы
“This” жана “super” ачкыч сөздөрү Java программалоодо колдонулат. Бул ачкыч сөздөр өзгөрмө же башка идентификатор аты катары колдонулушу мүмкүн эмес. Java объектиге багытталган программалоону (OOP) колдойт. Программа же программалык камсыздоо объекттерди колдонуу менен моделдештирилиши мүмкүн. Объекттер класстарды колдонуу менен тойбойт. OOP бир мамы мурас болуп саналат. Бул кодду кайра колдонуу мүмкүнчүлүгүн камсыз кылат. Буга чейин бар класстар суперкласстар, ал эми туунду класстар субкласстар. Супер ачкыч сөздү суперкласстын объектисине кайрылуу үчүн колдонсо болот. Системада бир нече объект бар. "Бул" ачкыч сөзү учурдагы объектке кайрылуу үчүн колдонулат. Бул менен super ортосундагы негизги айырма "бул" учурдагы объектке шилтеме кылуу үчүн колдонулган шилтеме өзгөрмө, ал эми "super" дароо суперкласс объектине шилтеме кылуу үчүн колдонулган шилтеме өзгөрмө болуп саналат.
Бул Java'да эмне?
'Бул' ачкыч сөзү учурдагы объектке кайрылуу үчүн колдонулат. Берилген Java программасын караңыз.
01-сүрөт: Бул ачкыч сөздү колдонгон Java программасы
Javaда өзгөрмөлөрдүн үч түрү бар. Алар инстанциялык өзгөрмөлөр, жергиликтүү өзгөрмөлөр жана класс өзгөрмөлөрү. Жогорудагы программага ылайык, класстын Кызматкеринин эки инстанция өзгөрмөлөрү бар. Алар id жана аты болуп саналат. Локалдык өзгөрмөлөр бул методдорго таандык өзгөрмөлөр. Класс өзгөрмөлөрү бардык объекттер тарабынан бөлүшүлөт. Идентификатор жана ысым Кызматкер конструкторуна берилет. Эгерде программист id=id жазса; ал инстанция өзгөрмөлөрүн инициализациялабайт, анткени Конструктордо идентификатор жана аты бар. Мисалы өзгөрмөлөр үчүн маанилер жок. Ошентип, аларды басып чыгаруу нөлдү көрсөтөт. Муну колдонууда, ал учурдагы объектке тиешелүү. Демек, конструкторго id жана ат берүү инстанциянын өзгөрмөлөрүн орното алат.
"Бул" ачкыч сөзүн учурдагы класс ыкмасын чакыруу үчүн колдонсо болот. Берилген java программасын караңыз.
коомдук класс ThisDemo{
жалпыга ачык статикалык жараксыз негизги(String args){
Менинклассым менинКласым=new Myclass();
менинClass. B();
}
}
класс Myclass{
коомдук жараксыз A(){
System.out.println("A");
}
коомдук жараксыз B(){
System.out.prinltn("B");
this. A();
}
}
Myclass классы эки ыкманы камтыйт. Алар А жана В методдору. Myclass объектин түзүүдө жана В ыкмасын чакырууда В, А чыгарылыш катары басылып чыгат. В методунда В басып чыгаргандан кийин this. A() сыяктуу билдирүү бар. Муну колдонуу менен учурдагы класс ыкмасы колдонулду.
Учурдагы класстын конструкторун чакыруу үчүн бул ачкыч сөздү колдонсо болот. Берилген программаны караңыз.
коомдук класс ThisDemo{
жалпыга ачык статикалык жараксыз негизги(String args){
A obj=жаңы A(5);
}
}
класс A{
коомдук A(){
System.out.println("Конструктор A");
}
коомдук A(int x){
this();
System.out.println («Параметрлештирилген конструктор A»);
}
}
Жогорудагы программага ылайык, А классында демейки конструктор жана параметрленген конструктор бар. А объектин түзүүдө параметрлештирилген конструктор чакырылат. Параметрлештирилген конструктордо мындай билдирүү бар(); Ал учурдагы класстын конструкторун чакырат, бул A().
Java'да супер деген эмне?
'Супер' ачкыч сөзү мураска байланыштуу. Мурас - объектке багытталган программалоонун негизги түшүнүгү. Бул жаңы класска мурунтан эле бар класстын касиеттерин жана ыкмаларын колдонууга мүмкүндүк берет. Учурдагы класс ата-эне класс же суперкласс катары белгилүү. Жаңы класс бала класс же субкласс катары белгилүү.
'Супер' - бул дароо ата-эне класс объектисине шилтеме кылуу үчүн колдонулган шилтеме өзгөрмө. Супер ачкыч сөз дароо ата-эне класс инстанциясынын өзгөрмөсүнө шилтеме жасай алат же дароо ата-эне класс ыкмасын чакыра алат. super() ата-эне класстын конструкторун чакыруу үчүн колдонулат.
А жана В сыяктуу эки класс бар деп ойлойлу. А классы суперкласс, ал эми В классы субкласс. А жана В класстарынын экөө тең дисплей ыкмасына ээ.
коомдук класс A{
жалпыга ачык дисплей(){
System.out.println("A");
}
}
коомдук B классы А узартат{
жалпыга ачык дисплей(){
System.out.println("B");
}
}
В тибиндеги объектти түзүп, дисплей ыкмасын чакырганда, ал В чыгарууну берет. А классында дисплей ыкмасы бар, бирок ал В субклассынын дисплей ыкмасы менен жокко чыгарылат. Эгерде программист А классындагы дисплей ыкмасын чакыргысы келсе, анда ал супер ачкыч сөзүн колдоно алат. Берилген Java программасын караңыз.
02-сүрөт: Java программасы супер ачкыч сөзү менен
Жогорудагы программага ылайык, А классында 10 мааниси бар өзгөрмө аталышы бар. В классы А кеңейтилип, 20 мааниси бар өзгөрмө аталган номерге ээ. Жалпысынан В тибиндеги объектти түзүп, дисплей ыкмасын чакырганда субкласстагы санды бериши керек, анткени суперкласстын мааниси жаңы класс тарабынан жокко чыгарылган.super.num колдонуу менен, суперкласс номеринин мааниси басып чыгарылат.
Super() суперкласстын конструкторун чакыруу үчүн колдонулушу мүмкүн. Төмөнкү программаны караңыз.
коомдук класс Негизги {
жалпыга ачык статикалык жараксыз негизги(String args){
B obj=new B();
}
}
класс A{
A(){
System.out.println("A");
}
}
Б классы A{
B(){
super();
System.out.println("B");
}
}
Жогорудагы программага ылайык, А классында А () конструктору бар. В классында B () конструктору бар. В классы А классын кеңейтет. В тибиндеги объектти түзүүдө ал A, B чыгаруу катары басып чыгарат. B () конструкторунда супер () бар. Ошондуктан, адегенде А конструктору чакырылып, андан кийин В.super () жазылбаса да, демейки боюнча ата-эне конструктор чакырылат.
Усулду колдонуучу супер төмөнкүдөй.
03-сүрөт: Суперкласс ыкмасын чакырган Java программасы
Жогорудагы программага ылайык, А классында дисплей ыкмасы бар. B классынын дисплей ыкмасы да бар. В классы А кеңейтет. В тибиндеги объектти түзүүдө жана дисплей ыкмасын чакырууда А жана В түрүндө жыйынтык чыгат. В классындагы дисплей методунда А классынын дисплей ыкмасы super.display() аркылуу чакырылат. Бул ыкма биринчи "А" басып чыгарат. Андан кийин "B" басып чыгарат.
Бул менен супердин кандай окшоштугу бар?
Экөө тең Java программалоодогу ачкыч сөздөр
Бул менен супердин ортосунда кандай айырма бар?
Бул vs Super |
|
"Бул" учурдагы объектке шилтеме кылуу үчүн колдонулган шилтеме өзгөрмө. | "Супер" - бул дароо суперкласс объектине шилтеме кылуу үчүн колдонулган шилтеме өзгөрмө. |
Instance Variable | |
Учурдагы класс инстанциясынын өзгөрмөсүнө муну колдонуу менен кайрылса болот. | Суперкласс инстанциясынын өзгөрмөсүнө super аркылуу кайрылса болот. |
Класс ыкмасы | |
Учурдагы класс ыкмасын муну колдонуу менен чакырса болот. | Superclass ыкмасын super аркылуу колдонсо болот. |
Конструктор | |
Учурдагы класстын конструкторун this() аркылуу чакырса болот. | Superclass конструкторун super(). аркылуу чакырса болот. |
Корытынды – Javaдагы бул суперге каршы
«Бул» жана «супер» ачкыч сөздөрү Java тилинде колдонулат. Ачкыч сөздөрдү өзгөрмө же башка идентификатор аты катары колдонууга болбойт. Алар бирдей көрүнөт, бирок алардын айырмасы бар. Мунун супер менен супердин ортосундагы айырма: super - дароо суперкласс объектине шилтеме кылуу үчүн колдонулган шилтеме өзгөрмө, ал эми бул учурдагы объектке шилтеме берүүчү шилтеме өзгөрмө.
Мунун PDF форматын Java тилинде жүктөп алыңыз
Сиз бул макаланын PDF версиясын жүктөп алып, шилтеме эскертүүсүнө ылайык оффлайн максаттарында колдоно аласыз. Сураныч, PDF версиясын бул жерден жүктөп алыңыз: Бул менен Javaдагы супердин ортосундагы айырма