private abstract array
Овај водич ће размотрити посебне конструкторе као што су Приватни конструктор на Јави, Сажетак, Низ, Низ, Интерфејс и Деструктор на Јави:
У нашем последњем упутству о конструкторима на Јави научили смо важне концепте повезане са конструкторима на Јави. Разговарали смо о томе како створити конструктор и правилима за дефинисање конструктора, заједно са врстама конструктора итд.
Такође смо научили преоптерећење конструктора и уланчавање конструктора. Сада, разговарајмо о одређеним специјалним конструкторима попут приватног конструктора, апстрактног конструктора и конструктора низа и низа у Јави. Затим ћемо разговарати о деструкторима у Јави и на крају ћемо истражити разлике између методе и конструктора.
=> Овде погледајте водич за почетнике Јава.
Почнимо са приватним конструктором на Јави.
Шта ћете научити:
- Приватни конструктор у Јави
- Конструктор апстрактне класе у Јави
- Конструктор интерфејса у Јави
- Конструктор низа у Јави
- Конструктори низова у Јави
- Деструктор у Јави
- Конструктор против методе у Јави
- Често постављана питања
- Закључак
- Препоручено читање
Приватни конструктор у Јави
Као што је већ поменуто, конструктори у класи Јава могу имати повезане спецификаторе приступа. Дакле, можемо имати конструкторе који су приватни или јавни. О додатцима за приступ ћемо разговарати више у нашим наредним водичима, а такође ћемо поново посетити конструкторе.
Када се конструктор прогласи приватним, тада му се може приступити само унутар класе. Не може приступити изведеним класама преко друге класе. Стога морамо да обезбедимо јавни метод у класи која има приватне конструкторе, тако да овај јавни метод може приступити приватним конструкторима.
У Јави се приватни конструктор може користити у следећим ситуацијама:
- За примену синглетона.
- За уградњу фабричких метода.
- За класе које имају само статичке чланове (променљиве и методе).
- За часове који имају коначне чланове. (константе - коначне и статичне).
- Да бисте користили набрајање без типова.
Као пример , хајде да похађамо часове за појединце. Класа синглетон је класа која истовремено омогућава само један објекат. Можемо користити приватни конструктор да осигурамо да не дозволимо стварање више од једног објекта.
Програм испод примењује синглетон класу користећи приватни конструктор.
class SingleTonClass { //Static Class Reference private static SingleTonClass obj=null; private SingleTonClass(){ System.out.println('SingleTonClass::Private constructor'); } public static SingleTonClass create_object(){ //logic to create only one instance if(obj==null){ obj= new SingleTonClass(); } return obj; } public void display(){ System.out.println('This is SingleTonClass !!'); } } class Main { public static void main(String args[]){ //cannot call private constructor directly. SingleTonClass myobject= SingleTonClass.create_object(); myobject.display(); } }
Излаз:
Горњи програм декларише синглетон класу. Обезбедили смо приватни конструктор и јавни метод за приступ приватном конструктору и такође ограничили број објеката на само један. У главној методи извршавамо јавну методу да бисмо креирали објект класе синглетон.
Конструктор апстрактне класе у Јави
Апстрактна класа у Јави као Ц ++, осим што за разлику од Ц ++, у Јава-и имамо апстрактну кључну реч која се користи за декларацију апстрактне класе. Апстрактне класе у Јави могу имати конструкторе. Овај конструктор апстрактне класе позива се када креирамо инстанцу класе имплементације (која наслеђује апстрактну класу).
Размотрите следећи пример конструктора апстрактне класе.
//abstract class declaration abstract class BaseClass { BaseClass() { System.out.println('BaseClass::Constructor Called'); } abstract void func1(); } class DerivedClass extends BaseClass { DerivedClass() { System.out.println('DerivedClass::Constructor Called'); } void func1() { System.out.println('DerivedClass::func1() called'); } } class Main { public static void main(String args[]) { DerivedClass d = new DerivedClass(); } }
Излаз:
Како апстрактна класа не може да се примени, наследимо нову класу из ове апстрактне класе. Резултат програма показује да када креирамо објекат изведене класе у главној методи, тада се прво позива конструктор апстрактне класе, а затим конструктор изведене класе.
Конструктор интерфејса у Јави
Интерфејси у Јави слични су апстрактним класама. Интерфејси су подразумевано јавни сажетак и имају само прототипове метода. Ови прототипови се затим примењују у класи која имплементира интерфејс.
Дакле, да ли су конструктори присутни у интерфејсима?
Не. Интерфејси немају конструкторе. То је зато што су методе у интерфејсу само прототипи и стога не морамо да инстанцирамо или креирамо објекат интерфејса јер га уопште нећемо користити. Отуда нема потребе ни за конструктором у интерфејсу.
Доле наведени Јава програм показује ову логику.
//interface declaration interface Interface_Add{ public int addNumbers(int num1, int num2); //method prototype } class AddClass implements Interface_Add{ public int addNumbers(int num1, int num2){ //method implementation int result= num1+num2; return result; } } class Main{ public static void main(String args[]) { AddClass obj= new AddClass(); System.out.println('Result of addition:' + obj.addNumbers(2, 3)); } }
Излаз:
Овде имамо интерфејс „Интерфаце_адд“ са прототипом једне методе „аддНумберс“. Тада класа ‘АддЦласс’ имплементира овај интерфејс и такође метод аддНумберс.
У главној методи класа се инстанцира и метода се извршава. Стога не видимо потребу за конструктором у овом интерфејсу.
Хајде сада да разговарамо о конструкторима неких постојећих класа у Стрингу и Арраиу сличном Јави.
Конструктор низа у Јави
Објект низа у Јави може се дефинисати као објекат класе Стринг. Класа Стринг пружа следеће конструкторе за креирање и иницијализацију Стринг објеката.
У наставку се разматрају неки од ових конструктора:
# 1) Низ (бајт [] миАрраи)
Конструише нови Стринг објекат из датог бајт поља. За конструкцију објекта низа користи подразумевани скуп знакова платформе и декодира бајтни низ.
Пример:
byte[] myArray = {65, 66, 67, 68, 69}; String str =new String(myArray); //ABCDE
# 2) Низ (бајт [] миАрраи, Цхарсет цхар_сет)
ред кружних низова ц ++
Овај конструктор конструира нови објект низа помоћу цхар_сет наведеног у позиву конструктора за декодирање бајт поља.
Пример:
byte[] myArray = {65, 66, 67, 68, 69}; Charset cs = Charset.defaultCharset(); String str = new String(myArray, cs); //ABCDE
# 3) Низ (цхар [] миАрраи)
Стринг објект можемо конструисати из низа знакова.
Пример:
char myArray[] = {'P', 'a', 'r', 'i', 's'}; String s = new String(myArray); //Paris
# 4) Низ (цхар [] миАрраи, инт старт_индек, инт цоунт)
Овде конструишемо објект Стринг из низа знакова тако што укључујемо број знакова од старт_индек до броја.
Пример:
char myArray[] = {'P', 'a', 'r', 'i', 's'}; String s = new String(myArray, 0,2); //Pa
# 5) Стринг (инт [] интАрраи, инт оффсет, инт цоунт)
Горњи конструктор додељује нови Стринг објекат из инт низа. Број знакова у низу дефинише се померањем и бројањем.
Пример:
int[] intArray = {65, 69,73,79,85 }; String s = new String (intArray, 0, 5); //AEIOU
# 6) Стринг (СтрингБуффер стрбуффер)
У овом конструктору нови Стринг објекат је конструисан од СтрингБуффер објекта.
Пример:
StringBuffer strbuffer = new StringBuffer('SoftwareTestingHelp'); String s = new String (strbuffer); //SoftwareTestingHelp
# 7) Стринг (СтрингБуилдер стрбуилдер)
Нови објект Стринг креира се помоћу објекта СтрингБуилдер.
Пример:
StringBuilder strbuilder = new StringBuilder('SoftwareTestingHelp'); String s = new String(strbuilder); // SoftwareTestingHelp
Конструктори низова у Јави
Низови користе конструкторе за креирање и иницијализацију низова помоћу нове кључне речи као што је приказано доле.
int[] data = new int[4];
Горња изјава иницијализује низ од 4 елемента на подразумеваних 0.
Следећи начин иницијализације низа дат је у наставку:
int[] data = new int[]{2, 4, 6, 8};
Деструктор у Јави
До сада смо у Јави видели конструкторе помоћу којих креирамо објекат. Када објекат заврши са својим послом и више није потребан, тада меморију која је додељена објекту треба ослободити или ослободити. Ово је посао деструктора у Јави.
У Јави је Сакупљач смећа одговоран за ослобађање објеката који се више не користе или су постали недоступни. Деструктори у Јави називају се финализаторима и они су недетерминистички, тако да не можемо гарантовати да ће бити извршени.
У Јави не треба да бринемо о деструкторима. Деструктори немају одређену синтаксу на Јави. Објекти су уништени, али ми не зовемо деструктор онако како га зовемо у Ц ++.
Као што је горе поменуто, посао деструктора обавља финализатор који зове Сакупљач смећа.
Метода финализатора у Јави приказана је у наставку за вашу референцу.
class Main { public static void main(String[] args) { Main dm = new Main(); //create object dm = null; System.gc(); //call garbage collector System.out.println('Main Mathod'); } protected void finalize() //finalize method { System.out.println('Finalize method :: object is garbage collected'); } }
Излаз:
У горњем програму креирамо објект класе. Поставите га на нулу и тада позивамо методу Систем.гц (). Сада је тај објекат недоступан и имплицитно се позива метода финализације (деструктор).
Конструктор против методе у Јави
Хајде да табуларизујемо неке разлике између конструктора и методе у Јави.
Конструктори | Метод |
---|---|
Ствара нови објекат. | Функционише на већ постојећем објекту. |
Блок кода који се користи за иницијализацију чланова класе приликом креирања објекта. | Колекција програмских израза који генеришу резултат када се изврше. |
Користи се за извршавање иницијализације објеката. | Низ наредби које извршава Јава. Може садржати или не садржавати рутину иницијализације. |
Призива се имплицитно. | Потребно је изричито позивање у програму. |
Позвано када се креира нови објекат помоћу нове кључне речи. | Позвано када програмер позове методу. |
Има исто име као и разред. | Може имати било које име дозвољено програмским језиком. |
Нема тип повратка. | Мора имати тип ретурн, иначе би требало да се врати воид. |
Класа може имати много преоптерећених конструктора. | Класа је могла да преоптерети као и различите методе. |
Не може га наследити дете класа. | Може га наследити класа детета и чак поништити. |
Често постављана питања
П # 1) Могу ли конструктори бити приватни?
Одговор: Да. Конструктори у Јави могу бити приватни. Све класе, укључујући апстрактне, могу имати приватне конструкторе. Користећи приватне конструкторе можемо спречити инстанцирање класе или можемо ограничити број објеката те класе.
П # 2) Каква је употреба конструктора сажетих класа у Јави?
Одговор: Конструктор апстрактне класе позива се када креирамо објекат изведене класе који наслеђује апстрактну класу. Осим тога ако апстрактна класа има неке променљиве члана, можемо их иницијализовати у конструктору апстрактне класе.
П # 3) Можемо ли дефинисати параметризовани конструктор у класи апстракта на Јави?
Одговор: Да, можемо имати параметарски конструктор у апстрактној класи. Тада можемо позвати овај конструктор из изведене класе која је наследила апстрактну класу помоћу позива супер ().
П # 4) Да ли знате зашто у Јави нема Деструктора?
Одговор: Јава не мора имати одређени деструктор јер има свој сакупљач смећа. Овај сакупљач смећа уништава недоступне објекте и ослобађа меморију. Метода названа финализе је такође део сакупљача смећа који се извршава недетерминистички и извршава функцију деструктора попут ослобађања ресурса итд.
П # 5) Може ли Апстрактна класа имати тело?
Одговор: Не. Апстрактна класа може имати само декларације метода и конструкторе. Његове методе се не примењују. Класа која наслеђује ову апстрактну класу примењује методе. Осим прототипа или декларације, може имати и спецификаторе видљивости или приступа.
Закључак
Овим је завршен наш водич о конструкторима на Јави. Овде смо покрили дефиницију, стварање и типове конструктора. Такође смо разговарали о преоптерећењу конструктора и ланцу конструктора у Јави.
Истражили смо апстрактне и приватне конструкторе на Јави и научили зашто интерфејси не могу имати конструкторе. Видели смо конструкторе који се користе у низу и Стринг класама.
Такође смо разговарали о деструкторима у Јави који врше функцију супротну од конструктора. Конструктори стварају предмете док деструктори уништавају предмете. У Јави, функцију деструктора врши финализатор који се извршава током сакупљања смећа.
Дакле, у Јава-и немамо одређени деструктор и не морамо га дефинисати на начин на који то радимо у Ц ++-у. Такође смо разговарали о разликама између методе и конструктора. Знамо да конструктор није исто што и метода, али конструктор можемо посматрати као посебну методу.
=> Прочитајте серију Еаси Јава Траининг.
иоутубе то вав цонвертер бесплатно преузимање
Препоручено читање
- Јава конструктор - конструктори класе, копије и задати
- Ц # концепти: конструктор, деструктор, статичка класа, структура и набрајање
- Низ Јава низова - Водич са примерима кода
- Јава Стринг са Стринг бафером и Стринг Буилдер Туториал
- Метода дужине Јава низа () Метода са примерима
- Јава Стринг садржи () Водич за методе са примерима
- Јава Стринг индекОф метода са примерима кода
- Јава Стринг цомпареТо метод са примерима програмирања