தொகுதி பாடங்கள் (1/2)
இடைமுகங்கள்
சுருக்க வகுப்புகள் பகுதியளவில் செயல்படுத்தப்பட்ட குறியீடு மற்றும் நிகழ்வு புலங்கள் இரண்டையும் கொண்டிருக்கக்கூடும், ஜாவாவில் இடைமுகங்கள் தூய்மையான நடத்தைக்கான ஒப்பந்தங்களாகும். ஒரு இடைமுகம் ஒரு வகுப்பினால் என்ன* செய்ய முடியும் என்பதை வரையறுக்கிறது, ஆனால் *எப்படி_ செய்கிறது என்பதை அல்ல.
இது செயல்பாடுகளின் வரையறைக்கும் அவற்றின் உண்மையான செயலாக்கத்திற்கும் இடையே முழுமையான துண்டிக்க அனுமதிக்கிறது.
ஒரு இடைமுகத்தை வரையறுத்தல் (interface)
நாங்கள் interface முக்கிய சொல்லைப் பயன்படுத்துகிறோம். இடைமுகத்தில் அறிவிக்கப்பட்ட அனைத்து முறைகளும் மறைமுகமாக public மற்றும் abstract (அதைக் குறிப்பிடத் தேவையில்லை):
interface Drivable {
void startEngine();
void stopEngine();
}ஒரு இடைமுகத்தை செயல்படுத்துதல் (implements)
ஒரு வகுப்பு implements முக்கிய சொல்லைப் பயன்படுத்தி ஒரு இடைமுகத்தை செயல்படுத்துகிறது மற்றும் அனைத்து வரையறுக்கப்பட்ட முறைகளுக்கும் (உடலுடன்) செயல்படுத்தலை வழங்க வேண்டும்:
class Motorcycle implements Drivable {
@Override
public void startEngine() {
System.out.println("Rombo del motore acceso!");
}
@Override
public void stopEngine() {
System.out.println("Motore spento.");
}
}இடைமுகங்களின் நன்மைகள்
- மல்டிபிள் இன்ஹெரிட்டன்ஸ்: ஜாவாவில், ஒரு கிளாஸ் ஒரே ஒருபேரன்ட் கிளாஸை (ஒற்றை பரம்பரை) நீட்டிக்க முடியும், ஆனால் அது ஒரே நேரத்தில் பல இடைமுகங்களை செயல்படுத்த முடியும்.
Java
class HybridCar implements Drivable, Chargeable { ... } - Decoupling: நீங்கள் இடைமுக வகையைப் பயன்படுத்தி மாறிகளை வரையறுக்கலாம். அந்த இடைமுகத்தை செயல்படுத்தும் எந்த பொருளும் அத்தகைய மாறிக்கு ஒதுக்கப்படலாம்.
Java
Drivable vehicle = new Motorcycle(); vehicle.startEngine();
இடைமுகங்களில் மாறிலிகள்
இடைமுகங்களில், புலங்களை அறிவிக்க முடியும். நீங்கள் இந்த மாற்றிகளைக் குறிப்பிடாவிட்டாலும், இந்தப் புலங்கள் மறைமுகமாக public static final (வகுப்பு மாறிலிகள் என்று பொருள்). இதன் விளைவாக, அவை அறிவிக்கப்பட்டவுடன் உடனடியாக தொடங்கப்பட வேண்டும்:
interface PhysicsConstants {
double GRAVITY = 9.81; // Implicitly public static final
}இயல்புநிலை முறைகள் (default)
ஜாவா 8 இலிருந்து தொடங்கி, default முக்கிய சொல்லைப் பயன்படுத்தி இடைமுகத்திற்குள் இயல்புநிலை செயலாக்கத்துடன் முறைகளை வரையறுக்க முடியும். இந்த முறைகள் செயல்படுத்தும் வகுப்புகளை அவற்றை மேலெழுதும்படி கட்டாயப்படுத்தாது, இது ஒரு பின்னடைவு நடத்தையை வழங்குகிறது:
interface Logger {
void log(String message);
// Default method with a body
default void logError(String message) {
log("ERROR: " + message);
}
}நீங்களே முயற்சி செய்து பாருங்கள்
வெற்றிடமான ஃப்ளை() முறையுடன் பறக்கக்கூடிய இடைமுகத்தை உருவாக்கவும். பின்னர் Flyable ஐ செயல்படுத்தும் மற்றும் Flying ஐ திரையில் அச்சிடும் பறவை வகுப்பை செயல்படுத்தவும்.
குறிப்பைக் காட்டு
Flyable இல், `void fly();` என்று எழுதவும். பறவை வகுப்பில், `@Override public void fly() { System.out.println('Flying') எனக் குறிக்கும் முறையைச் செயல்படுத்தவும்; }`.
3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்
வெற்றிடமான டிரா() முறையுடன் வரையக்கூடிய இடைமுகத்தை வரையறுக்கவும். பின்னர் வரையக்கூடிய மற்றும் வரைதல் செவ்வகத்தை அச்சிடும் ஒரு செவ்வக வகுப்பைச் செயல்படுத்தவும்.
குறிப்பைக் காட்டு
இடைமுகத்தில் `செல்லம் வரைய ();` என்பதை வரையறுக்கவும். செவ்வகத்தில், `@Override public void draw() { System.out.println('Drawing Rectangle'); }`.
3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்
வெற்றிட நீச்சல்() முறையை வரையறுப்பதன் மூலம் நீந்தக்கூடிய இடைமுகத்தை முடிக்கவும். பின்னர், வாத்து வகுப்பை முடிக்கவும், இதனால் அது பறக்கக்கூடிய மற்றும் நீந்தக்கூடிய, அச்சிடுதல் ஃப்ளை() முறையில் மற்றும் நீச்சல் () முறையில் நீச்சல் ஆகிய இரண்டையும் செயல்படுத்துகிறது.
குறிப்பைக் காட்டு
நீச்சலுக்குள் `வீடு நீச்சல்();` என்று அறிவிக்கவும். `வகுப்பு வாத்து பறக்கக்கூடியது, நீந்தக்கூடியது` என அறிவித்து, கோரப்பட்ட சரங்களை அச்சிடுவதற்கு இரண்டு முறைகளையும் செயல்படுத்தவும்.
3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்