"வணக்கம், அமிகோ! இன்றைய பாடத்தின் தலைப்பு விரிவுபடுத்துதல் மற்றும் குறுகுதல் வகை மாற்றங்கள் ஆகும். பழமையான வகைகளை விரிவுபடுத்துதல் மற்றும் குறுகுதல் பற்றி நீங்கள் நீண்ட காலத்திற்கு முன்பே கற்றுக்கொண்டீர்கள். நிலை 10 இல். இன்று நாம் இது குறிப்பு வகைகளுக்கு எவ்வாறு செயல்படுகிறது என்பதைப் பற்றி பேசப் போகிறோம், அதாவது வகுப்புகளின் நிகழ்வுகள்."

உண்மையில், எல்லாம் மிகவும் எளிமையானது. ஒரு வகுப்பின் பரம்பரைச் சங்கிலியை கற்பனை செய்து பாருங்கள்: வகுப்பு, அதன் பெற்றோர், பெற்றோரின் பெற்றோர் போன்றவை, பொருள் வகுப்பிற்குத் திரும்பும். ஒரு வகுப்பில் அது மரபுரிமையாகப் பெறும் வகுப்பின் அனைத்து உறுப்பினர் முறைகளும் இருப்பதால் , வகுப்பின் ஒரு நிகழ்வு அதன் பெற்றோரின் வகையைச் சேர்ந்த மாறியில் சேமிக்கப்படும் .

இங்கே ஒரு உதாரணம்:

குறியீடு விளக்கம்
class Animal
{
public void doAnimalActions();
}class Cat extends Animal
{
public void doCatActions();
}class Tiger extends Cat
{
public void doTigerActions();
}
இங்கே மூன்று வகுப்பு அறிவிப்புகள் உள்ளன: விலங்கு, பூனை மற்றும் புலி. பூனை விலங்கைப் பெறுகிறது. மேலும் புலி பூனையை மரபுரிமையாகப் பெறுகிறது.
public static void main(String[] args)
{
Tiger tiger = new Tiger();
Cat cat = new Tiger();
Animal animal = new Tiger();
Object obj = new Tiger();
}
புலிப் பொருளை எப்போதும் அதன் மூதாதையரில் ஒருவரான மாறிக்கு ஒதுக்கலாம். புலி வகுப்பிற்கு, இவை பூனை, விலங்கு மற்றும் பொருள்.

இப்போது விரிவாக்கம் மற்றும் குறுகலான மாற்றங்களைப் பார்ப்போம்.

ஒரு அசைன்மென்ட் ஆபரேஷன் நம்மை பரம்பரைச் சங்கிலியை (பொருள் வகுப்பை நோக்கி) நகர்த்தினால், நாங்கள் விரிவடையும் மாற்றத்தைக் கையாளுகிறோம் (அப்காஸ்டிங் என்றும் அழைக்கப்படுகிறது). பொருளின் வகையை நோக்கி நாம் சங்கிலியை கீழே நகர்த்தினால், அது ஒரு குறுகலான மாற்றமாகும் (கீழே இறக்குதல் என்றும் அழைக்கப்படுகிறது).

பரம்பரைச் சங்கிலியை மேலே நகர்த்துவது அகலப்படுத்துதல் என்று அழைக்கப்படுகிறது, ஏனெனில் இது மிகவும் பொதுவான வகைக்கு வழிவகுக்கிறது. இருப்பினும், அவ்வாறு செய்யும்போது, ​​பரம்பரை மூலம் வகுப்பில் சேர்க்கப்பட்ட முறைகளை செயல்படுத்தும் திறனை இழக்கிறோம்.

குறியீடு விளக்கம்
public static void main(String[] args)
{
Object obj = new Tiger();
Animal animal = (Animal) obj;
Cat cat = (Cat) obj;
Tiger tiger = (Tiger) animal;
Tiger tiger2 = (Tiger) cat;
}
வகையைச் சுருக்கும்போது, ​​நீங்கள் ஒரு வகை மாற்று ஆபரேட்டரைப் பயன்படுத்த வேண்டும், அதாவது வெளிப்படையான மாற்றத்தை நாங்கள் செய்கிறோம்.

இதன் மூலம், ஜாவா இயந்திரம் நாம் மாற்ற விரும்பும் வகையை உண்மையில் பெறுகிறதா என்பதை சரிபார்க்கிறது.

இந்த சிறிய கண்டுபிடிப்பு வகை வார்ப்பு பிழைகளின் எண்ணிக்கையில் பன்மடங்கு குறைப்பை உருவாக்கியது, மேலும் ஜாவா நிரல்களின் நிலைத்தன்மையை கணிசமாக அதிகரித்தது.

குறியீடு விளக்கம்
public static void main(String[] args)
{
Object obj = new Tiger();
if (obj instanceof Cat)
{
Cat cat = (Cat) obj;
cat.doCatActions();
}}
இன்னும் சிறப்பாக,  காசோலையின் உதாரணத்தைப் பயன்படுத்தவும்
public static void main(String[] args)
{
Animal animal = new Tiger();
doAllAction(animal);

Animal animal2 = new Cat();
doAllAction(animal2);

Animal animal3 = new Animal();
doAllAction(animal3);
}

public static void doAllAction(Animal animal)
{
if (animal instanceof Tiger)
{
Tiger tiger = (Tiger) animal;
tiger.doTigerActions();
}

if (animal instanceof Cat)
{
Cat cat = (Cat) animal;
cat.doCatActions();
}

animal.doAnimalActions();
}
மற்றும் இங்கே ஏன். இடதுபுறத்தில் உள்ள உதாரணத்தைப் பாருங்கள்.

நாங்கள் எந்த வகையான பொருளுடன் வேலை செய்கிறோம் என்பது எங்களுக்கு (எங்கள் குறியீடு) எப்போதும் தெரியாது. இது மாறி (விலங்கு), அல்லது எந்த சந்ததி வகை (பூனை, புலி) போன்ற அதே வகைப் பொருளாக இருக்கலாம்.

doAllAction முறையைக் கவனியுங்கள். எந்த வகையான பொருளின் உள்ளே சென்றாலும் இது சரியாக வேலை செய்கிறது.

வேறு வார்த்தைகளில் கூறுவதானால், விலங்கு, பூனை மற்றும் புலி ஆகிய மூன்று வகைகளுக்கும் இது சரியாக வேலை செய்கிறது.

public static void main(String[] args)
{
Cat cat = new Tiger();
Animal animal = cat;
Object obj = cat;
}
இங்கே எங்களுக்கு மூன்று பணி செயல்பாடுகள் உள்ளன. அவை அனைத்தும் விரிவடையும் மாற்றங்களின் எடுத்துக்காட்டுகள்.

காஸ்ட் தேவையில்லை என்பதால், வகை காஸ்ட் ஆபரேட்டர் இங்கு தேவையில்லை. ஒரு பொருள் குறிப்பை எப்போதும் ஒரு மாறியில் சேமிக்க முடியும், அதன் வகை அதன் மூதாதையர்களில் ஒன்றாகும்.

"ஓ, இரண்டாவது முதல் கடைசி உதாரணம் எல்லாவற்றையும் தெளிவாக்கியது: காசோலை ஏன் தேவைப்படுகிறது மற்றும் ஏன் வகை வார்ப்பு தேவை."

"நான் நம்புகிறேன். இந்த உண்மைக்கு உங்கள் கவனத்தை ஈர்க்க விரும்புகிறேன்:"

இவை எதுவும் ஒரு பொருளை எந்த வகையிலும் மாற்றுவதில்லை! ஒரு குறிப்பிட்ட குறிப்பு மாறியில் அழைக்கப்படும் முறைகளின் எண்ணிக்கை மட்டுமே மாறுகிறது .

எடுத்துக்காட்டாக, doAnimalActions மற்றும் doCatActions முறைகளை அழைக்க Cat மாறி உங்களை அனுமதிக்கிறது. புலிப் பொருளைச் சுட்டிக் காட்டினாலும் அதற்கு doTigerActions முறை பற்றி எதுவும் தெரியாது.

"ஆமாம், எனக்கு புரிந்தது. நான் நினைத்ததை விட இது எளிதாக இருந்தது."