CodeGym /Java Blog /சீரற்ற /நிலையான உள்ளமை வகுப்புகள்
John Squirrels
நிலை 41
San Francisco

நிலையான உள்ளமை வகுப்புகள்

சீரற்ற குழுவில் வெளியிடப்பட்டது
வணக்கம்! ஜாவாவில் உள்ள உள்ளமைக்கப்பட்ட வகுப்புகளின் தலைப்பை நாங்கள் தொடர்ந்து ஆராய்வோம். கடந்த பயிற்சியில், நிலையான அல்லாத உள்ளமை வகுப்புகளைப் பற்றி பேசினோம், அவை உள் வகுப்புகள் என்றும் அழைக்கப்படுகின்றன, நிலையான உள்ளமை வகுப்புகள் - 1இன்று நாம் மற்றொரு குழு வகுப்புகளுக்கு செல்கிறோம். நிலையான உள்ளமை வகுப்புகளை நாங்கள் கருத்தில் கொள்வோம். நிலையான உள்ளமை வகுப்புகள் - 3அவர்கள் மற்ற வகுப்புகளிலிருந்து எவ்வாறு வேறுபடுகிறார்கள்? இந்த வகையான வகுப்பை அறிவிக்கும் போது, ​​நீங்கள் ஏற்கனவே நன்கு அறிந்த நிலையான முக்கிய சொல்லைப் பயன்படுத்துகிறோம்:

public class Boeing737 {

   private int manufactureYear;
   private static int maxPassengersCount = 300;

   public Boeing737(int manufactureYear) {
       this.manufactureYear = manufactureYear;
   }

   public int getManufactureYear() {
       return manufactureYear;
   }

   public static class Drawing {
      
       public static int getMaxPassengersCount() {
          
           return maxPassengersCount;
       }
   }
}
நிலையான உள்ளமை வகுப்புகள் - 4இந்த எடுத்துக்காட்டில், எங்களிடம் Boeing737வெளிப்புற வகுப்பு உள்ளது, இது இந்த வகை விமானத்தைக் குறிக்கிறது. இது ஒரு அளவுருவுடன் ஒரு கட்டமைப்பாளரைக் கொண்டுள்ளது: உற்பத்தி ஆண்டு ( int manufactureYear). ஒரு நிலையான மாறி உள்ளது: அதிகபட்ச பயணிகளின் எண்ணிக்கை ( int maxPassengersCount). இது ஒரே மாதிரியின் அனைத்து விமானங்களுக்கும் ஒரே மதிப்பைக் கொண்டிருக்கும், எனவே நமக்கு ஒரு உதாரணம் மட்டுமே தேவை. கூடுதலாக, இது நிலையான உள்ளமைக்கப்பட்ட வகுப்பைக் கொண்டுள்ளது: Drawing(விமானத்தின் பொறியியல் வரைபடங்களைக் குறிக்கிறது). விமானத்தைப் பற்றிய அனைத்து அதிகாரப்பூர்வ தகவல்களையும் இணைக்க இந்த வகுப்பைப் பயன்படுத்துகிறோம். எங்கள் எடுத்துக்காட்டில், எளிமைக்காக, இந்த வகுப்பை உற்பத்தி ஆண்டிற்கு மட்டுப்படுத்தியுள்ளோம், ஆனால் அதில் பல தகவல்கள் இருக்கலாம். நிலையான உள்ளமை வகுப்புகள் - 5கடந்த பாடத்தில் நாம் கூறியது போல், அத்தகைய உள்ளமைக்கப்பட்ட வகுப்பை உருவாக்குவது உறைவிடத்தை மேம்படுத்துகிறது மற்றும் மிகவும் யதார்த்தமான சுருக்கத்திற்கு பங்களிக்கிறது. நிலையான மற்றும் நிலையான அல்லாத உள்ளமை வகுப்புகளுக்கு என்ன வித்தியாசம்? 1. நிலையான Drawingவகுப்பின் ஒரு பொருள் வெளிப்புற வகுப்பின் ஒரு குறிப்பிட்ட நிகழ்வின் குறிப்பைச் சேமிக்காது. கடைசி பாடத்திலிருந்து சைக்கிள் உதாரணத்தை நினைவில் கொள்ளுங்கள்:

public class Bicycle {

   private String model;
   private int maxWeight;

   public Bicycle(String model, int maxWeight) {
       this.model = model;
       this.maxWeight = maxWeight;
   }
  
   public void start() {
       System.out.println("Let's go!");
   }

   public class Handlebar {

       public void right() {
           System.out.println("Steer right!");
       }

       public void left() {

           System.out.println("Steer left!");
       }
   }

}
Handlebarஅந்த பாடத்தில், உள் வகுப்பின் ஒவ்வொரு நிகழ்வும், நமக்குப் புலப்படாமல், வெளிப்புற வகுப்பின் நிகழ்வைக் குறிப்பிடுவதைப் பற்றி பேசினோம் Bicycle. வெளிப்புற வர்க்கத்தின் உதாரணம் இல்லாமல், உள் வர்க்கத்தின் ஒரு பொருள் வெறுமனே இருக்க முடியாது. நிலையான உள்ளமை வகுப்புகளுக்கு, இது அப்படி இல்லை. ஒரு நிலையான உள்ளமை வகுப்பின் ஒரு பொருள் அதன் சொந்தமாக இருக்கும் திறன் கொண்டது. இது சம்பந்தமாக, நிலையான வகுப்புகள் நிலையானவை அல்லாததை விட "சுயாதீனமானவை". நீங்கள் தெரிந்து கொள்ள வேண்டிய ஒரே விஷயம் என்னவென்றால், அத்தகைய பொருளை உருவாக்கும் போது, ​​​​நீங்கள் வெளிப்புற வகுப்பின் பெயரைக் குறிப்பிட வேண்டும்:

public class Main {

   public static void main(String[] args) {

       Boeing737.Drawing drawing1 = new Boeing737.Drawing();
       Boeing737.Drawing drawing2 = new Boeing737.Drawing();
   }
}
Drawingகடந்த பாடத்தில் நாங்கள் ஏன் வகுப்பை நிலையானதாக மாற்றினோம்Seatவகுப்பு (சைக்கிள் இருக்கையைக் குறிக்கும்) நிலையானது அல்லவா? போன தடவை மாதிரி கொஞ்சம் "தத்துவம்"னு சொல்ற மாதிரி புரியுதுங்க :) சைக்கிள் இருக்கை போலல்ல, இன்ஜினியரிங் ட்ராயிங் கான்செப்ட், விமானம்னு கான்செப்ட்ல கண்டிப்பா கட்டுப் படாதது. சைக்கிள் இல்லாமல், ஒரு தனி சைக்கிள் இருக்கை பொருள் பெரும்பாலும் அர்த்தமற்றதாக இருக்கும் (எப்போதும் இல்லாவிட்டாலும், கடைசி பாடத்தில் இதைப் பற்றி பேசினோம்). ஒரு பொறியியல் வரைபடத்தின் கருத்து அதன் சொந்த அர்த்தமுள்ளதாக இருக்கிறது. எடுத்துக்காட்டாக, விமானப் பராமரிப்பைத் திட்டமிடும் பொறியாளர்களுக்கு இது பயனுள்ளதாக இருக்கும். திட்டத்தை உருவாக்க விமானம் தேவையில்லை மற்றும் எங்கு வேண்டுமானாலும் இருக்கலாம். பொறியியல் வரைதல் மட்டுமே தேவை. கூடுதலாக, ஒரே மாதிரியின் அனைத்து விமானங்களும் ஒரே பொறியாளர் வரைபடத்தைக் கொண்டிருக்கும், எனவே சைக்கிள் இருக்கையுடன் இருப்பது போன்ற இறுக்கமான உறவு எதுவும் இல்லை. எனவே, ஏDrawingபொருளுக்கு ஒரு குறிப்பிட்ட விமானப் பொருளைப் பற்றிய குறிப்பு தேவையில்லை. 2. வெளி வகுப்பின் மாறிகள் மற்றும் முறைகளுக்கு வெவ்வேறு அணுகல். ஒரு நிலையான உள்ளமைக்கப்பட்ட வகுப்பானது வெளிப்புற வகுப்பின் நிலையான புலங்களை மட்டுமே அணுக முடியும். எங்கள் எடுத்துக்காட்டில், வர்க்கமானது வெளிப்புற வகுப்பின் நிலையான மாறியின் மதிப்பை வழங்கும் Drawingஒரு முறையைக் கொண்டுள்ளது . இருப்பினும், வகுப்பில் மதிப்பை வழங்குவதற்கு ஒரு முறையை உருவாக்க முடியாது . எல்லாவற்றிற்கும் மேலாக, மாறி நிலையானது அல்ல, அதாவது இது ஒரு குறிப்பிட்ட நிகழ்வைச் சேர்ந்ததாக இருக்க வேண்டும் . நாம் ஏற்கனவே கண்டுபிடித்தது போல, நிலையான உள்ளமை வகுப்புகளின் விஷயத்தில், வெளிப்புற வகுப்பின் பொருள் எளிதில் இல்லாமல் இருக்கலாம். எனவே, வரம்பு :) ஒரு நிலையான மாறி வெளிப்புற வகுப்பில் எந்த அணுகல் மாற்றியை கொண்டுள்ளது என்பது முக்கியமல்ல. அது இருந்தாலும்getMaxPassengersCount()maxPassengersCountgetManufactureYear()DrawingmanufactureYearmanufactureYearBoeing737private, நிலையான உள்ளமை வகுப்பிற்கு இன்னும் அணுகல் இருக்கும். மேலே உள்ள அனைத்தும் நிலையான மாறிகளை அணுகுவதற்கு மட்டுமல்ல, நிலையான முறைகளுக்கும் பொருந்தும். முக்கியமான! உள் வகுப்பின் அறிவிப்பில், staticநீங்கள் ஒரே ஒரு பொருளை மட்டுமே உருவாக்க முடியும் என்பதை முக்கிய வார்த்தை அர்த்தப்படுத்துவதில்லை. பொருள்களை மாறிகளுடன் குழப்ப வேண்டாம். நாம் நிலையான மாறிகளைப் பற்றி பேசுகிறோம் என்றால், ஆம், ஒரு நிலையான வகுப்பு மாறியின் ஒரு நிகழ்வு உள்ளது, எடுத்துக்காட்டாக, maxPassangersCount. ஆனால் staticஉள்ளமைக்கப்பட்ட வகுப்பிற்குப் பயன்படுத்தப்படும்போது, ​​அதன் பொருள்கள் வெளிப்புற வகுப்பின் பொருள்களைப் பற்றிய குறிப்புகளைக் கொண்டிருக்கவில்லை என்று மட்டுமே அர்த்தம். மேலும் நாம் விரும்பும் பல பொருட்களை தாங்களாகவே உருவாக்கலாம்:

public class Boeing737 {

   private int manufactureYear;
   private static int maxPassengersCount = 300;

   public Boeing737(int manufactureYear) {
       this.manufactureYear = manufactureYear;
   }

   public int getManufactureYear() {
       return manufactureYear;
   }

   public static class Drawing {

       private int id;

       public Drawing(int id) {
           this.id = id;
       }

       public static int getPassengersCount() {

           return maxPassengersCount;
       }

       @Override
       public String toString() {
           return "Drawing{" +
                   "id=" + id +
                   '}';
       }

       public static void main(String[] args) {

           for (int i = 1; i < 6; i++) {

               Boeing737.Drawing drawing = new Boeing737.Drawing(i);
               System.out.println(drawing);
           }
       }
   }
}
இந்த முறையை உள்ளமை வகுப்பில் நேரடியாக அறிவித்தோம் main()(இதற்கு சிறப்புக் காரணம் எதுவும் இல்லை - இது சாத்தியம் என்பதை உங்களுக்குத் தெரிவிக்க மட்டுமே), மேலும் 5 Drawingபொருட்களை உருவாக்கினோம். எங்களிடம் வெளி வர்க்கத்தின் ஒரு பொருள் கூட இல்லை என்ற போதிலும். நீங்கள் பார்க்க முடியும் என, இது எந்த சிக்கலையும் உருவாக்கவில்லை :) கன்சோல் வெளியீடு:

Drawing{id=1} 
Drawing{id=2} 
Drawing{id=3} 
Drawing{id=4} 
Drawing{id=5}
அது எங்கள் பாடத்தை முடிக்கிறது! ஒரு வேளை, ஆரக்கிள் ஆவணத்தில் அவர்களைப் பற்றிய பகுதிக்கான இணைப்பை உங்களுக்கு விட்டுவிடுகிறேன் . இன்னும் ஏதாவது தெளிவாக தெரியவில்லை என்றால், அதைப் படியுங்கள். இப்போது நான் இரண்டு பணிகளைத் தீர்க்க வேண்டிய நேரம் இது! :)
கருத்துக்கள்
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION