మాడ్యూల్ పాఠాలు (1/2)
తరగతులు మరియు వస్తువులు
జావా అనేది **ఆబ్జెక్ట్-ఓరియెంటెడ్ ప్రోగ్రామింగ్ (OOP)**పై దృష్టి కేంద్రీకరించబడిన భాష. OOPలో, మేము వస్తువులను ఉపయోగించి వాస్తవ ప్రపంచాన్ని మోడల్ చేస్తాము. ఒక వస్తువుకు స్థితి (డేటా) మరియు ప్రవర్తనలు (చర్యలు) ఉంటాయి.
తరగతులు మరియు వస్తువులు
- తరగతి: ఇది ఒక రకమైన వస్తువు యొక్క లక్షణాలు మరియు ప్రవర్తనను నిర్వచించే బ్లూప్రింట్ (లేదా టెంప్లేట్).
- ఆబ్జెక్ట్: ఇది తరగతి నుండి సృష్టించబడిన ఒక నిర్దిష్ట ఉదాహరణ.
ఉదాహరణకు, Car తరగతి అయితే, గ్యారేజీలో ఉన్న మీ కారు అసలు వస్తువు.
ఉదాహరణ ఫీల్డ్స్ మరియు కన్స్ట్రక్టర్స్
తరగతిలోని డేటాను ఉదాహరణ ఫీల్డ్లు (లేదా గుణాలు) అంటారు. ఒక వస్తువు యొక్క సృష్టి సమయంలో దాని స్థితిని ప్రారంభించడానికి, మేము కన్స్ట్రక్టర్ అనే ప్రత్యేక పద్ధతిని ఉపయోగిస్తాము.
కన్స్ట్రక్టర్కు క్లాస్కి అదే పేరు ఉంది మరియు రిటర్న్ రకం లేదు (void కూడా కాదు).
class Dog {
// Instance fields
String name;
int age;
// Constructor
public Dog(String name, int age) {
this.name = name; // 'this' refers to the current object's field
this.age = age;
}
}newతో ఒక వస్తువును సృష్టిస్తోంది
మెమరీలో ఆబ్జెక్ట్ని సృష్టించడానికి, మేము new కీవర్డ్ని అనుసరించి క్లాస్ కన్స్ట్రక్టర్ని ఉపయోగిస్తాము:
public class Main {
public static void main(String[] args) {
// Creating a Dog object
Dog myDog = new Dog("Fido", 3);
// Accessing fields
System.out.println(myDog.name + " is " + myDog.age + " years old.");
}
}this సూచన
జావాలోని this కీవర్డ్ కన్స్ట్రక్టర్ లేదా పద్ధతిని అమలు చేస్తున్న ప్రస్తుత వస్తువును సూచిస్తుంది. కన్స్ట్రక్టర్ పారామీటర్లు ఆబ్జెక్ట్ యొక్క ఇన్స్టాన్స్ ఫీల్డ్ల (వేరియబుల్ షాడోవింగ్) వలె ఒకే పేరును కలిగి ఉన్నప్పుడు అస్పష్టతను నివారించడానికి ఇది ప్రధానంగా ఉపయోగించబడుతుంది:
class User {
String username;
public User(String username) {
this.username = username; // this.username is the instance field, username is the parameter
}
}మెమరీ కేటాయింపు: స్టాక్ vs హీప్
జావా మెమరీని ఎలా కేటాయిస్తుందో అర్థం చేసుకోవడం చాలా అవసరం:
- స్టాక్: ఇది వేగవంతమైన మరియు వ్యవస్థీకృత మెమరీ ప్రాంతం, ఇక్కడ ఆదిమ వేరియబుల్స్ మరియు ఆబ్జెక్ట్ రిఫరెన్స్లు (మెమరీ అడ్రస్లు) స్థానిక పద్ధతులకు నిల్వ చేయబడతాయి.
- హీప్: ఇది వాస్తవ వస్తువులు కేటాయించబడే పెద్ద మరియు డైనమిక్ మెమరీ ప్రాంతం (
newకీవర్డ్ ఉపయోగించి).
మేము Dog myDog = new Dog("Fido", 3); ప్రకటించినప్పుడు:
- సూచన
myDogస్టాక్పై సృష్టించబడింది. - అసలు
Dogఆబ్జెక్ట్ దాని డేటాతో హీప్లో సృష్టించబడింది. myDogవేరియబుల్ హీప్పై ఉన్న వస్తువు యొక్క స్థానాన్ని సూచిస్తుంది.
మీరే ప్రయత్నించండి
ఫీల్డ్ పేరు మరియు తగిన కన్స్ట్రక్టర్ను జోడించడం ద్వారా వ్యక్తి తరగతిని పూర్తి చేయండి. అప్పుడు, ప్రధాన పద్ధతిలో, ఆలిస్ పేరుతో p అనే వ్యక్తి వస్తువును సృష్టించండి.
సూచనను చూపించు
తరగతి లోపల `స్ట్రింగ్ పేరు;` అని వ్రాయండి, కన్స్ట్రక్టర్ `పబ్లిక్ పర్సన్ (స్ట్రింగ్ పేరు) {this.name = పేరు; }` మరియు దాన్ని `కొత్త వ్యక్తి('ఆలిస్')`తో తక్షణం చేయండి.
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది
ఫీల్డ్ల శీర్షిక (స్ట్రింగ్) మరియు పేజీలు (పూర్ణాంక), పూర్తి కన్స్ట్రక్టర్తో బుక్ క్లాస్ను సృష్టించండి మరియు ప్రధాన పద్ధతిలో మోబి డిక్ శీర్షిక మరియు 600 పేజీలతో బి అనే పుస్తకాన్ని తక్షణమే రూపొందించండి.
సూచనను చూపించు
బుక్లో రెండు ఫీల్డ్లను నిర్వచించాలని గుర్తుంచుకోండి, వాటిని కన్స్ట్రక్టర్లో `this.title = శీర్షిక;` మరియు `this.pages = పేజీలు;` ఉపయోగించి మ్యాప్ చేయండి మరియు `కొత్త పుస్తకం('Moby Dick', 600)`ని ఉపయోగించండి.
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది
ఫీల్డ్ల పేరు (స్ట్రింగ్) మరియు ధర (డబుల్) మరియు రెండు ఫీల్డ్లను ప్రారంభించే కన్స్ట్రక్టర్తో ఉత్పత్తి తరగతిని సృష్టించండి. ప్రధాన పద్ధతిలో, ల్యాప్టాప్ మరియు ధర 999.99తో p అనే ఉత్పత్తి వస్తువును సృష్టించండి.
సూచనను చూపించు
ఉత్పత్తిలో `స్ట్రింగ్ పేరు;` మరియు `డబుల్ ధర;` ఫీల్డ్లను ప్రకటించండి, వాటిని కన్స్ట్రక్టర్లో `this.name = name;` మరియు `this.price = price;`తో కేటాయించి, చివరకు ప్రధాన పద్ధతిలో ఆబ్జెక్ట్ను సృష్టించండి.
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది