ప్రధాన కంటెంట్‌కు వెళ్లండి
మాడ్యూల్ 4 · 2లో పాఠం 1కోర్సులో 7/14~15 min
మాడ్యూల్ పాఠాలు (1/2)

తరగతులు మరియు సవరణలు

టైప్‌స్క్రిప్ట్ స్టాటిక్ టైపింగ్, యాక్సెస్ మాడిఫైయర్‌లు మరియు షార్ట్‌హ్యాండ్ పారామీటర్ ప్రాపర్టీస్ వంటి శక్తివంతమైన ఆబ్జెక్ట్-ఓరియెంటెడ్ ప్రోగ్రామింగ్ (OOP) ఫీచర్‌లతో ప్రామాణిక ES6 తరగతులను విస్తరించింది.

తరగతులు మరియు యాక్సెస్ మాడిఫైయర్‌లు

టైప్‌స్క్రిప్ట్‌లో, మీరు మూడు ప్రధాన కీలకపదాలను ఉపయోగించి తరగతి సభ్యులు, లక్షణాలు మరియు పద్ధతుల దృశ్యమానతను నియంత్రించవచ్చు:

  • public (డిఫాల్ట్): సభ్యుడు ఎక్కడి నుండైనా ప్రాప్యత చేయగలరు.
  • private: సభ్యుడు దానిని నిర్వచించిన తరగతిలో మాత్రమే యాక్సెస్ చేయగలరు.
  • protected: సభ్యుడు తరగతి మరియు దాని ఉపవర్గాలలో (వారసత్వం) ప్రాప్యత చేయగలరు.
TS
class Animal {
  public name: string;
  private age: number;

  constructor(name: string, age: number) {
    this.name = name;
    this.age = age;
  }

  public getAge(): number {
    return this.age;
  }
}

పారామీటర్ లక్షణాలు

టైప్‌స్క్రిప్ట్ క్లాస్ మెంబర్‌ని నేరుగా కన్స్ట్రక్టర్‌లో డిక్లేర్ చేయడానికి మరియు ప్రారంభించేందుకు షార్ట్‌హ్యాండ్ సింటాక్స్‌ను అందిస్తుంది. యాక్సెస్ మాడిఫైయర్‌తో కన్స్ట్రక్టర్ పారామీటర్‌ను ప్రిఫిక్స్ చేయడం ద్వారా, ప్రాపర్టీ స్వయంచాలకంగా సృష్టించబడుతుంది మరియు కేటాయించబడుతుంది:

TS
// This syntax does exactly the same as the previous example!
class Animal {
  constructor(
    public name: string,
    private age: number,
  ) {}
}

ఇంటర్‌ఫేస్‌లను అమలు చేస్తోంది

ఒక తరగతి implements కీవర్డ్‌ని ఉపయోగించి ఒకటి లేదా అంతకంటే ఎక్కువ ఇంటర్‌ఫేస్‌లను అమలు చేయగలదు. అవసరమైన అన్ని పద్ధతులు మరియు లక్షణాలను నిర్వచించడం ద్వారా తరగతి నిర్దిష్ట ఒప్పందానికి కట్టుబడి ఉందని ఇది నిర్ధారిస్తుంది:

TS
interface Flyable {
  fly(altitude: number): void;
}

class Bird implements Flyable {
  constructor(public name: string) {}

  fly(altitude: number): void {
    console.log(`${this.name} is flying at ${altitude} meters.`);
  }
}

వారసత్వం మరియు super

టైప్‌స్క్రిప్ట్ తరగతి వారసత్వానికి పూర్తిగా మద్దతు ఇస్తుంది. ఒక తరగతి extends కీవర్డ్‌ని ఉపయోగించి మరొక తరగతిని విస్తరించవచ్చు. సబ్‌క్లాస్ కన్‌స్ట్రక్టర్‌ని నిర్వచించినట్లయితే, అది thisని యాక్సెస్ చేయడానికి ముందు తప్పనిసరిగా super() ఫంక్షన్‌ని ఉపయోగించి బేస్ క్లాస్ కన్‌స్ట్రక్టర్‌కి కాల్ చేయాలి:

TS
class Person {
  constructor(public name: string) {}
}

class Student extends Person {
  constructor(
    name: string,
    public grade: number,
  ) {
    super(name); // Calls the Person constructor
  }
}

మీరే ప్రయత్నించండి

వ్యాయామం 1: కార్ క్లాస్ మరియు ప్రైవేట్ మాడిఫైయర్

వ్యాయామం#ts.m4.l1.e1
ప్రయత్నాలు: 0లోడ్ అవుతోంది...

కార్ అనే తరగతిని ప్రకటించండి. ఇది కన్స్ట్రక్టర్‌లో నిర్వచించబడిన రీడ్‌ఓన్లీ మోడల్ ప్రాపర్టీ (స్ట్రింగ్) కలిగి ఉండాలి, ప్రైవేట్ మైలేజ్ ప్రాపర్టీ (సంఖ్య) 0కి ప్రారంభించబడింది, పబ్లిక్ మెథడ్ డ్రైవ్ (మైల్స్: నంబర్): మైలేజీని మైళ్ల వారీగా పెంచే శూన్యత మరియు మైలేజీని తిరిగి ఇచ్చే గెటర్ లేదా మెథడ్ getMileage(): సంఖ్య.

ఎడిటర్ లోడ్ అవుతోంది…
సూచనను చూపించు

ప్రైవేట్ మైలేజీని ఉపయోగించండి: సంఖ్య = 0; వేరియబుల్‌ను ప్రైవేట్‌గా చేయడానికి మరియు కన్స్ట్రక్టర్ (పబ్లిక్ రీడ్ మాత్రమే మోడల్: స్ట్రింగ్) {} షార్ట్‌హ్యాండ్‌గా.

3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది

వ్యాయామం 2: షేప్ ఇంటర్‌ఫేస్ మరియు సర్కిల్ క్లాస్

వ్యాయామం#ts.m4.l1.e2
ప్రయత్నాలు: 0లోడ్ అవుతోంది...

ఆకార ఇంటర్‌ఫేస్‌ని అమలు చేసే సర్కిల్ క్లాస్‌ని అమలు చేయడం ద్వారా కోడ్‌ను పూర్తి చేయండి. తరగతి తప్పనిసరిగా కన్స్ట్రక్టర్ ద్వారా చదవడానికి మాత్రమే వ్యాసార్థం ప్రాపర్టీ (సంఖ్య) సెట్‌ను కలిగి ఉండాలి మరియు getArea(): సంఖ్యను అమలు చేయాలి (రిటర్నింగ్ Math.PI * వ్యాసార్థం * వ్యాసార్థం).

ఎడిటర్ లోడ్ అవుతోంది…
సూచనను చూపించు

సర్కిల్ క్లాస్‌లో పనిముట్ల ఆకారాన్ని ఉపయోగించండి మరియు getArea(): సంఖ్య పద్ధతిని నిర్వచించండి.

3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది

వ్యాయామం 3: వియుక్త వాహన తరగతి మరియు మోటార్‌సైకిల్ సబ్‌క్లాస్

వ్యాయామం#ts.m4.l1.e3
ప్రయత్నాలు: 0లోడ్ అవుతోంది...

వియుక్త తరగతి వాహనాన్ని విస్తరించే మోటార్‌సైకిల్ అనే తరగతిని ప్రకటించండి. 'మోటార్‌సైకిల్' స్ట్రింగ్‌ను తిరిగి ఇవ్వడానికి ఇది తప్పనిసరిగా స్టార్ట్() పద్ధతిని అమలు చేయాలి, తర్వాత make (this.make) మరియు 'start'.

ఎడిటర్ లోడ్ అవుతోంది…
సూచనను చూపించు

క్లాస్ మోటార్‌సైకిల్ విస్తారిత వాహనాన్ని ఉపయోగించండి మరియు సరైన స్ట్రింగ్‌ను అందించే స్టార్ట్(): స్ట్రింగ్ పద్ధతిని అమలు చేయండి.

3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది

వ్యాయామం 4: పారామీటర్ లక్షణాలు మరియు వారసత్వం

వ్యాయామం#ts.m4.l1.e4
ప్రయత్నాలు: 0లోడ్ అవుతోంది...

కన్స్ట్రక్టర్ షార్ట్‌హ్యాండ్‌ని ఉపయోగించి చదవడానికి మాత్రమే ప్రాపర్టీ ఐడి (సంఖ్య) మరియు పబ్లిక్ ప్రాపర్టీ పేరు (స్ట్రింగ్)ని నిర్వచించే ఉద్యోగి అనే తరగతిని సృష్టించండి. ఆపై, ఉద్యోగిని విస్తరించే క్లాస్ డెవలపర్‌ని సృష్టించండి మరియు కన్స్ట్రక్టర్ ద్వారా పబ్లిక్ ప్రాపర్టీ డిపార్ట్‌మెంట్ (స్ట్రింగ్)ని జోడించండి.

ఎడిటర్ లోడ్ అవుతోంది…
సూచనను చూపించు

డెవలపర్ కన్స్ట్రక్టర్‌లో సూపర్(ఐడి, పేరు) ఉపయోగించండి మరియు కన్స్ట్రక్టర్ ద్వారా ఆస్తిని నిర్వచించడానికి పబ్లిక్ డిపార్ట్‌మెంట్‌ని ఉపయోగించండి.

3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది