మాడ్యూల్ పాఠాలు (2/2)
పద్ధతులు మరియు ఓవర్లోడింగ్
పద్ధతులు వస్తువు యొక్క ప్రవర్తనను నిర్వచిస్తాయి. ఆబ్జెక్ట్ యొక్క ఇన్స్టాన్స్ ఫీల్డ్లు లేదా ఇన్కమింగ్ పారామితులపై పనిచేసే క్లాస్ లోపల డిక్లేర్డ్ చేయబడిన ఫంక్షన్లుగా మనం వాటిని భావించవచ్చు.
ఒక పద్ధతిని నిర్వచించడం
జావాలో ఒక పద్ధతి వీటిని కలిగి ఉంటుంది:
- యాక్సెస్ మాడిఫైయర్ (ఉదా.,
public,private). - తిరిగి ఇచ్చే రకం (ఉదా.,
int,String, లేదాvoidఏదైనా తిరిగి ఇవ్వకపోతే). camelCaseలో పద్ధతి పేరు.- పారామితులు కుండలీకరణాల్లో చేర్చబడ్డాయి.
- మెథడ్ బాడీ కర్లీ బ్రేస్లతో జతచేయబడింది.
class Person {
String name;
public Person(String name) {
this.name = name;
}
// Method with return type String
public String greet() {
return "Ciao, mi chiamo " + name;
}
}ఒక పద్ధతిని పిలుస్తోంది
సృష్టించబడిన ఆబ్జెక్ట్పై పద్ధతిని అమలు చేయడానికి, మేము డాట్ సంజ్ఞామానాన్ని . ఉపయోగిస్తాము:
public class Main {
public static void main(String[] args) {
Person p = new Person("Marco");
String message = p.greet(); // Calling the method
System.out.println(message);
}
}విధానం ఓవర్లోడింగ్
జావాలో, ఒకే తరగతిలోని రెండు లేదా అంతకంటే ఎక్కువ పద్ధతులు ఒకే పేరుని కలిగి ఉంటాయి, అవి వేర్వేరు పరామితి జాబితా (సంఖ్య, క్రమం లేదా పారామితుల రకాలు) కలిగి ఉంటాయి. ఈ భావనను ఓవర్లోడింగ్ అంటారు.
కాల్ సమయంలో ఆమోదించబడిన వాదనలను విశ్లేషించడం ద్వారా కంపైలర్ ఏ పద్ధతిని ప్రారంభించాలో నిర్ణయిస్తారు.
class Printer {
// Method to print an integer
public void printValue(int number) {
System.out.println("Intero: " + number);
}
// Overloaded method to print a string
public void printValue(String text) {
System.out.println("Testo: " + text);
}
}విలువ ద్వారా పారామీటర్ పాసింగ్
జావాలో, అన్ని పారామితులు ** విలువ ద్వారా** (పాస్-బై-వాల్యూ) పాస్ చేయబడతాయి. దీని అర్థం మీరు ఒక పద్ధతికి వాదనను పంపినప్పుడు, జావా వేరియబుల్ విలువ యొక్క కాపీని సృష్టించి, దానిని పద్ధతికి పంపుతుంది.
- ఆదిమ రకాలు కోసం, పద్ధతి లోపల సవరించబడినప్పటికీ, పద్ధతి వెలుపల అసలు విలువ మారదు.
- ఆబ్జెక్ట్లు/రిఫరెన్స్లు కోసం, ఆబ్జెక్ట్కి సంబంధించిన రిఫరెన్స్ కాపీ చేయబడింది. దీని అర్థం మనం అసలు ఆబ్జెక్ట్ సూచించే మెమరీ చిరునామాను మార్చలేము, మేము దాని అంతర్గత స్థితిని (ఉదా., దాని ఫీల్డ్లు) సవరించవచ్చు మరియు ఆ మార్పులు వెలుపల కనిపిస్తాయి.
ఓవర్లోడింగ్ పరిమితులు: తిరిగి వచ్చే రకం
మీరు కేవలం రిటర్న్ రకం ఆధారంగా ఒక పద్ధతిని ఓవర్లోడ్ చేయలేరు అని గమనించడం ముఖ్యం. ఉదాహరణకు, కింది కోడ్ కంపైలేషన్ లోపానికి కారణమవుతుంది:
class Example {
// ERROR: The signature of the two methods is considered identical
public int getNumber() { return 42; }
public double getNumber() { return 42.0; }
}కంపైల్-సమయంలో ఏ వెర్షన్ను కాల్ చేయాలో నిర్ణయించడానికి కంపైలర్ పారామితుల ఆధారంగా పద్ధతుల మధ్య తేడాను గుర్తించాలి (కంపైల్ సమయంలో ఓవర్లోడింగ్ పరిష్కరించబడుతుంది).
మీరే ప్రయత్నించండి
రెండు సంఖ్యల మొత్తాన్ని అందించే కాలిక్యులేటర్ క్లాస్కి పబ్లిక్ పూర్ణ యాడ్(int a, int b) పద్ధతిని జోడించండి. ప్రధాన పద్ధతిలో, కాల్క్ ఆబ్జెక్ట్పై ఈ పద్ధతిని కాల్ చేయండి మరియు ఫలితాన్ని పూర్ణాంక వేరియబుల్కు కేటాయించండి.
సూచనను చూపించు
పద్ధతిని `పబ్లిక్ పూర్ణ యాడ్(int a, int b) {రిటర్న్ a + b; }` మరియు దానిని ప్రధాన పద్ధతిలో `int result = calc.add(5, 10);` అని పిలవండి.
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది
రెండు డబుల్ పారామితులను అంగీకరించి వాటి మొత్తాన్ని తిరిగి ఇచ్చే మరొక పద్ధతిని సృష్టించడం ద్వారా కాలిక్యులేటర్ క్లాస్లో యాడ్ పద్ధతిని ఓవర్లోడ్ చేయండి.
సూచనను చూపించు
`పబ్లిక్ డబుల్ యాడ్ (డబుల్ ఎ, డబుల్ బి) {రిటర్న్ ఎ + బి; }` మొదటి యాడ్ పద్ధతికి నేరుగా దిగువన ఉంది.
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది
రెండు సంఖ్యల ఉత్పత్తిని అందించే కాలిక్యులేటర్ తరగతికి పబ్లిక్ పూర్ణాంక గుణకారం (int a, int b) పద్ధతిని జోడించండి. ప్రధాన పద్ధతిలో, కాల్క్ ఆబ్జెక్ట్పై ఈ పద్ధతిని కాల్ చేయండి మరియు ఫలితాన్ని పూర్ణాంక వేరియబుల్కు కేటాయించండి.
సూచనను చూపించు
పద్ధతిని `పబ్లిక్ పూర్ణాంక గుణకారం (int a, int b) { return a * b; }` మరియు దానిని ప్రధాన పద్ధతిలో `int result = calc.multiply(5, 10);` అని పిలవండి.
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది