
"வணக்கம், அமிகோ!"
"ஹாய், எல்லி!"
"இன்று எங்களுக்கு மிகவும் சுவாரஸ்யமான தலைப்பு உள்ளது. இன்று நான் உங்களுக்கு உள்ளமைக்கப்பட்ட வகுப்புகளைப் பற்றி சொல்லப் போகிறேன்."
"ஒரு வகுப்பு மற்றொரு வகுப்பிற்குள் அறிவிக்கப்பட்டால், அது ஒரு உள்ளமைக்கப்பட்ட வகுப்பு. நிலையான அல்லாத உள்ளமை வகுப்புகள் உள் வகுப்புகள் என்று அழைக்கப்படுகின்றன."
"உள் வகுப்பின் பொருள்கள் வெளிப்புற வகுப்பின் பொருள்களுக்குள் உள்ளமைக்கப்படுகின்றன, எனவே அவை வெளிப்புற வகுப்பின் மாறிகளை அணுகலாம்."
public class Car
{
int height = 160;
ArrayList doors = new ArrayList();
public Car
{
doors.add(new Door());
doors.add(new Door());
doors.add(new Door());
doors.add(new Door());
}
class Door()
{
public int getDoorHeight()
{
return (int)(height * 0.80);
}
}
}
"கதவு வகுப்பில் getDoorHeight முறை உள்ளது என்பதைக் கவனத்தில் கொள்ளவும். இது கார் பொருளின் உயர மாறியைப் பயன்படுத்துகிறது மற்றும் கதவின் உயரத்தை வழங்குகிறது."

"ஒரு கதவு பொருள் கார் பொருளில் இருந்து சுயாதீனமாக இருக்க முடியாது. எல்லாவற்றிற்கும் மேலாக, அது கார் பொருளின் மாறிகளைப் பயன்படுத்துகிறது. கம்பைலர் கண்ணுக்குத் தெரியாமல் கன்ஸ்ட்ரக்டருக்கும் கதவு வகுப்பிற்கும் வெளிப்புற கார் பொருளின் குறிப்பைச் சேர்க்கிறது, அதனால் உள் கதவு வகுப்பின் முறைகள் வெளிப்புற கார் வகுப்பின் மாறிகளை அணுகலாம் மற்றும் அதன் முறைகளை அழைக்கலாம்."
"உள்ளமைக்கப்பட்ட பொருள்கள். எனக்குப் புரியவைக்கிறது. வரைபடத்தின் மூலம் ஆராயும்போது, அனைத்தும் மிகவும் நேரடியானவை."
"அப்படித்தான். ஒன்றிரண்டு நுணுக்கங்களைத் தவிர."
"உள் கதவு வகுப்பில் கார் பொருள் பற்றிய குறிப்பு உள்ளது, எனவே:"
1) கார் வகுப்பின் நிலையான முறைக்குள் நீங்கள் ஒரு கதவு பொருளை உருவாக்க முடியாது, ஏனெனில் நிலையான முறைகள் கார் பொருளின் குறிப்பைக் கொண்டிருக்கவில்லை, இது கதவு கட்டமைப்பாளருக்கு மறைமுகமாக அனுப்பப்படுகிறது.
சரி | தவறானது |
---|---|
|
|
2) கதவு வகுப்பில் நிலையான மாறிகள் அல்லது முறைகள் இருக்கக்கூடாது.
சரி | தவறானது |
---|---|
|
|
"அனைத்து கதவு பொருட்களாலும் பகிரப்படும் ஒரு மாறி எனக்கு தேவைப்பட்டால் என்ன செய்வது?"
"நீங்கள் எப்போதுமே அதை கார் வகுப்பில் எளிமையாக அறிவிக்கலாம். பின்னர் அது கார் பொருளில் உள்ள அனைத்து கதவு பொருட்களாலும் பகிரப்படும்."
3) குறிப்பு: உள் வகுப்பு பொது என அறிவிக்கப்பட்டால், அதன் நிகழ்வுகள் வெளி வகுப்பிற்கு வெளியே உருவாக்கப்படலாம், ஆனால் வெளிப்புற வகுப்பின் ஒரு நிகழ்வு முதலில் இருக்க வேண்டும்:
Car car = new Car();
Car.Door door = car.new Door();
Car.Door door = new Car().newDoor();
4) மேலும் ஒரு கருத்து நான் கிட்டத்தட்ட மறந்துவிட்டேன்.
"எங்களிடம் இரண்டு உள்ளமை பொருள்கள் இருப்பதால், உள் பொருளின் முறைகள் 'இது' எனப்படும் இரண்டு குறிப்புகளுக்கு அணுகலைக் கொண்டுள்ளன:"
public class Car
{
int width, height;
public class Door
{
int width, height;
public void setHeight(int height)
{
this.height = height;
}
public int getHeight()
{
if (height != 0)
return this.height;
else
return (int)(Car.this.height * 0.8);
}
}
"வகுப்புகளில் ஒரே பெயரில் உள்ள மாறிகளை நான் வேண்டுமென்றே அறிவித்தேன்."
"வெளி வகுப்பில் இருந்து ஒரு மாறியை அது மறைக்கப்படும்போது அணுக அல்லது உள் வகுப்பிற்குள் 'இதை' அணுக, 'YourClassName.this' என்று எழுதவும்:"
Car.this
Car.Door.this
Car.Door.InnerClass2.InnerClass3.this
"எனவே, ஒரு உள் வகுப்பின் முறைக்குள் 'இது' என்று எழுதினால், 'இது' உள் வகுப்பைக் குறிக்கிறது?"
"ஆமாம் சரியாகச்."
"உள் வகுப்புகளைப் பற்றி நீங்கள் என்ன நினைக்கிறீர்கள், அமிகோ?"
"அவை மிகவும் சுவாரஸ்யமானவை. அவை மிகவும் கடினமானவை என்று நான் கூறமாட்டேன்."
"நிறைய கட்டுப்பாடுகள் உள்ளன, ஆனால் அந்த கட்டுப்பாடுகள் எங்கிருந்து வருகின்றன, ஏன் அவை உள்ளன என்பதை நீங்கள் விளக்கிய பிறகு அவை மிகவும் தர்க்கரீதியானதாகத் தெரிகிறது."
"கூடுதலாக, நான் இரண்டு மாதங்களாக பணிகளில் உள்ளமைக்கப்பட்ட வகுப்புகளை எழுதுகிறேன், ஆனால் நான் உண்மையில் என்ன எழுதுகிறேன் என்பதை இப்போதுதான் உணர்கிறேன்."
"சிறந்த பாடத்திற்கு நன்றி, எல்லி."
"அமிகோ, நீங்கள் விரும்பியதில் நான் மகிழ்ச்சியடைகிறேன்."
GO TO FULL VERSION