మాడ్యూల్ పాఠాలు (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 { ... } - డీకప్లింగ్: మీరు ఇంటర్ఫేస్ రకాన్ని ఉపయోగించి వేరియబుల్లను నిర్వచించవచ్చు. ఆ ఇంటర్ఫేస్ని అమలు చేసే ఏదైనా వస్తువు అటువంటి వేరియబుల్కు కేటాయించబడుతుంది.
Java
Drivable vehicle = new Motorcycle(); vehicle.startEngine();
ఇంటర్ఫేస్లలో స్థిరాంకాలు
ఇంటర్ఫేస్లలో, ఫీల్డ్లను ప్రకటించడం సాధ్యమవుతుంది. మీరు ఈ మాడిఫైయర్లను పేర్కొనకపోయినా కూడా ఈ ఫీల్డ్లు పరోక్షంగా public static final (క్లాస్ స్థిరాంకాలు అని అర్థం). పర్యవసానంగా, వారు ప్రకటన చేసిన వెంటనే ప్రారంభించబడాలి:
interface PhysicsConstants {
double GRAVITY = 9.81; // Implicitly public static final
}డిఫాల్ట్ పద్ధతులు (default)
Java 8 నుండి ప్రారంభించి, default కీవర్డ్ని ఉపయోగించి ఇంటర్ఫేస్ లోపల డిఫాల్ట్ అమలుతో పద్ధతులను నిర్వచించడం సాధ్యమవుతుంది. ఈ పద్ధతులు అమలు చేసే తరగతులను వాటిని భర్తీ చేయమని బలవంతం చేయవు, ఇది ఫాల్బ్యాక్ ప్రవర్తనను అందిస్తుంది:
interface Logger {
void log(String message);
// Default method with a body
default void logError(String message) {
log("ERROR: " + message);
}
}మీరే ప్రయత్నించండి
శూన్యమైన ఫ్లై() పద్ధతితో ఫ్లైబుల్ ఇంటర్ఫేస్ను సృష్టించండి. ఆపై ఫ్లైబుల్ను అమలు చేసే బర్డ్ క్లాస్ని అమలు చేయండి మరియు స్క్రీన్కు ఫ్లయింగ్ను ప్రింట్ చేయండి.
సూచనను చూపించు
Flyableలో, `void fly();` అని వ్రాయండి. బర్డ్ క్లాస్లో, `@ఓవర్రైడ్ పబ్లిక్ శూన్యమైన ఫ్లై() {System.out.println('Flying')తో మార్క్ చేసే పద్ధతిని అమలు చేయండి; }`.
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది
శూన్యమైన డ్రా() పద్ధతితో డ్రాయబుల్ ఇంటర్ఫేస్ను నిర్వచించండి. ఆపై డ్రాయింగ్ను అమలు చేసే దీర్ఘచతురస్ర తరగతిని అమలు చేయండి మరియు డ్రాయింగ్ దీర్ఘచతురస్రాన్ని ముద్రించండి.
సూచనను చూపించు
ఇంటర్ఫేస్లో `శూన్యం డ్రా();` నిర్వచించండి. దీర్ఘచతురస్రంలో, `@ఓవర్రైడ్ పబ్లిక్ శూన్య డ్రా() {System.out.println('Drawing Rectangle'); }`.
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది
శూన్యమైన స్విమ్() పద్ధతిని నిర్వచించడం ద్వారా స్విమ్మబుల్ ఇంటర్ఫేస్ను పూర్తి చేయండి. అప్పుడు, డక్ క్లాస్ను పూర్తి చేయండి, తద్వారా ఇది ఫ్లైబుల్ మరియు స్విమ్మబుల్, ప్రింటింగ్ ఇన్ ది ఫ్లై() పద్ధతి మరియు స్విమ్మింగ్ ఇన్ స్విమ్ () పద్ధతి రెండింటినీ అమలు చేస్తుంది.
సూచనను చూపించు
స్విమ్మబుల్ లోపల `శూన్యం ఈత();` అని ప్రకటించండి. `క్లాస్ డక్ ఇంప్లిమెంట్స్ ఫ్లైబుల్, స్విమ్మబుల్` అని డిక్లేర్ చేయండి మరియు అభ్యర్థించిన స్ట్రింగ్లను ప్రింట్ చేయడానికి రెండు పద్ధతులను అమలు చేయండి.
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది