types classes java
Овај туторијал ће размотрити разне типове часова у Јави, као што су Апстрактни, Конкретни, Завршни, Унутрашњи, ПОЈО, Статички и други посебни часови са примерима:
У нашем претходном водичу разговарали смо о класама и објектима на Јави. Предавање на Јави је образац или нацрт. Такође се може дефинисати као колекција сличних предмета. Дефинишемо објекте класе типа, а затим комуницирамо путем тих објеката.
Сваки објекат је инстанца класе која има стање и понашање.
=> Посетите овде за ексклузивну серију лекција за Јава тренинг.
Шта ћете научити:
Типови разреда у Јави - Увод
Сви знамо да час има следеће компоненте:
- Модификатори: Наведите приступ класи.
- Назив класе: Назив класе.
- Кључне речи: Кључне речи које предлажу да ли класа проширује или примењује класу или интерфејс.
- Тело класе затворено у коврџаве заграде {}
У зависности од различитих коришћених модификатора, наведеног тела класе и коришћених кључних речи, на Јави имамо разне врсте класа.
како конфигурисати јунит у ецлипсе-у
- Класа бетона: Нормална класа која има конкретну примену метода.
- ПОЈО класа: Ово је „Обични стари Јава објекат“ који садржи само променљиве приватног члана и методе постављача гетера за приступ овим променљивим.
- Апстрактни час: Ова класа има једну или више апстрактних метода.
- Завршни час: Коначна класа се не може наследити.
- Статичка класа: Класа која садржи само статичке чланове.
- Унутрашња класа: Унутрашња класа је класа која је члан друге класе.
У овом упутству ћемо размотрити сваки од ових типова класа са примерима.
Такође ћемо разговарати о неким другим врстама класа које се у Јава-и сматрају посебним часовима.
- Анонимни час: Разред без икаквог имена.
- Непроменљива класа: Класа чији се објекат не може променити.
- Једнокреветна класа: Класа чија се појединачна инстанца може креирати.
- Класа објекта: Основна класа свих Јава функција.
- Класа омота: Сваки примитивни тип података у Јави има класу омотача.
Али прво, хајде да укратко разговарамо о томе како да увеземо класу у Јаву заједно са главном класом у Јави која садржи главни метод или почетну тачку у Јави.
Увези у Јаву
У Јави, ако желимо да у наш програм укључимо било коју функцију или функционалност, тада можемо да користимо изјаву „импорт“. Коришћењем изјаве о увозу можемо да увозимо цео пакет и користимо његову функционалност у нашем програму или такође можемо да укључимо једну класу.
Доље је дата синтакса за наредбу импорт.
import packageName/classname;
Ако желимо да увозимо јава.ланг пакет и све његове класе, онда можемо да напишемо следећу изјаву:
import java.lang.*;
Претпоставимо да желимо да у наш програм укључимо функционалност класе Арраис, онда можемо да напишемо следећу изјаву:
import java.util.Arrays;
Изјава о увозу је еквивалентна Ц / Ц ++ изјави за укључивање. Извоз импорт ставља се на почетак Јава програма као први израз. У програму Јава можемо имати више изјава.
Главна класа у Јави
Већ смо свесни да је у Јави метода маин () полазна тачка извршења било ког програма и може се сместити у било коју класу одређене апликације. Међутим, ако имамо сложену апликацију са превише датотека и класа, онда је пожељно имати Маин класу и главни () метод сместити у ову Маин класу.
class Main{ public static void main(String() args){ System.out.println(“Hello, World!”); } }
Имајте на уму да ЈВМ не креира објекат класе Маин. Логика тога стоји да је маин () статична метода, а може се позвати без икаквог објекта класе.
Врсте часова у Јави
Пређимо сада на типове класа у Јави. Објаснићемо сваку од ових класа једну по једну, праћену примерима програмирања.
# 1) Класа бетона
Конкретна класа је свака нормална класа у Јава програму. Ова класа неће имати апстрактне методе. Све методе у класи бетона су у потпуности примењене.
Конкретна класа може наследити другу класу, чак и апстрактну класу или применити интерфејс. Можемо направити пример конкретне класе и креирати њене објекте.
Једноставан пример класе бетона приказан је у наставку.
public class Main { // Concrete Class example static int total(int val1, int val2) { return val1 + val2; } public static void main(String args()) { int sum = total(100, 108); System.out.println('Total of two integers: ' + sum); } }
Оутпут
Горњи програм приказује конкретну класу. Видимо да ова класа има потпуну примену. Ништа није остало непотпуно или неизвршено.
# 2) ПОЈО час
ПОЈО (обичан стари Јава објекат) је класа која садржи само променљиве приватних чланова. Осим променљивих приватних чланова, садржи само методе гетера и постављача које користе ове променљиве чланова.
ПОЈО час нема своје понашање. Међутим, може надјачати неке методе попут једнаких или интерфејса.
Својства класе ПОЈО:
- ПОЈО класа мора да има јавни метод добивања и постављања.
- Сви променљиви чланови или инстанце требају бити приватни.
- ПОЈО класа не проширује или примењује класе или интерфејсе који су унапред наведени.
- Не садрже напомене које су унапред одређене.
- Нема конструктор без икаквих аргумената (конструктор без аргумената).
Доље је дат Јава програм који демонстрира ПОЈО класу.
//declare a POJO class class POJO_Class { private int daysOfWeek=7; //private variable public int getdaysOfWeek() { //getter return daysOfWeek; } public void setdaysOfWeek(int dow) { //setter this.daysOfWeek = dow; } } public class Main { public static void main(String args()){ POJO_Class pojoDemo = new POJO_Class(); //instance of POJO class System.out.println('Days of the week:' + pojoDemo.getdaysOfWeek()); } }
Оутпут
Горња демонстрација ПОЈО класе показује да она има приватну променљиву и методе постављача геттера за ову променљиву. Да бисмо приступили овој променљивој члана, користимо методу гетера. За ажурирање вредности користи се метода постављача.
# 3) Апстрактни час
Апстрактна класа је класа која је некомплетна или чија примена није завршена. Апстрактна класа не може бити инстанцирана. Требају га проширити остале класе и применити његове методе како би се формирала конкретна класа.
Апстрактна класа се декларише помоћу кључне речи „апстракт“. Апстрактна класа може имати статичке и завршне методе као и конструкторе.
Демонстрирајмо апстрактну наставу на Јави.
interface multiply //interface multiply { int product(int num1, int num2); } // abstract class abstract class Product implements multiply { // this is an abstract method to calculate product of two numbers public abstract int product(int num1, int num2); } // Concrete class :this will implement the abstract method above class Main extends Product { public int product(int num1, int num2) { return num1*num2; } // main method public static void main(String args()) { Main obj = new Main(); int prod = obj.product(100, 20); // print product System.out.println('Product of two numbers: ' + prod); } }
Оутпут
У горњем програму имамо интерфејс множења. Креирамо апстрактну класу Продуцт која имплементира мултипли интерфејс. Унутар производа имамо метод који није имплементиран. Тада имамо класу Маин која наслеђује класу Продуцт и примењује метод производа. Касније ћемо ову методу назвати на објекту класе Маин.
# 4) Статичка класа
Статички у Јави уопште значи објекат који припада класи, а не појединачним инстанцама. Дакле, статичном члану или методи у Јави не треба приступити с објектом већ директно помоћу имена класе.
Статичка класа у Јави може садржати само статичке чланове. Такође, не можемо инстанцирати статичку класу.
Следећи Јава програм демонстрира статичку класу.
class Static_Class { static int total; // static variable static void sum(int val1, int val2) { // static method System.out.print('Static method to calculate sum:' + ' '); total = val1 + val2; System.out.println(val1 + '+' + val2); // print the numbers } static class Nested_Class { // static class static { // static block System.out.println('static block inside a static nested class'); } public void displaySum() { sum(25, 75); // call static method // print the value in static variable total, it holds the sum of two numbers System.out.println('Sum of two numbers:' + total); } } } public class Main { public static void main(String args()) { // declare static class object Static_Class.Nested_Class object = new Static_Class.Nested_Class(); object.displaySum(); // call displaySum method inside a static class } }
Оутпут
Горња класа демонстрира статичку класу. Овде имамо статичку класу која је члан друге конкретне класе. Унутар статичке класе израчунавамо зброј два броја и резултат чувамо у статичкој променљивој која је члан спољне класе.
# 5) Завршни час
Завршна класа је класа која се не може наследити или поткласирати. Једном када је класа проглашена коначном у Јави, она је нека врста константе и постаје непроменљива.
Стога да бисмо класу учинили непроменљивом, морамо је прогласити коначном.
//final class final class Base_Class { void Display() { System.out.println('Base_Class::Display()'); } } //class Derived_Class extends Base_Class { //Compile-time error - can't inherit final class class Derived_Class{ void Display() { System.out.println('Derived_Class::Display()'); } } public class Main { public static void main(String() arg) { Base_Class base_obj = new Base_Class(); //create a final class object base_obj.Display(); Derived_Class deri_obj = new Derived_Class(); deri_obj.Display(); } }
Оутпут
Горњи програм прво декларише Басе_Цласс који је означен као „финал“. Стога, када покушавамо да га проширимо у Деривед_Цласс, добијамо грешку компајлера. (Коментарисани ред). Али можемо створити његов објекат и позвати методу Дисплаи.
# 6) Угњежђена класа / унутрашња класа
Угњежђена класа, такође позната као Унутрашња класа у Јави, користи се за побољшање енкапсулације. Угнеждена класа / унутрашња класа је класа затворена унутар друге класе.
Баш као што класа има променљиве и методе као своје чланове, она такође може имати унутрашњу класу као свог члана.
Угнеждена класа има следећу структуру:
class OuterClass{ class NestedClass{ //nested class code… } //outerclass code… }
Унутрашње класе имају следеће подврсте:
- Угњежђена унутрашња класа
- Метод Локални унутрашњи час
- Анонимни Унутрашњи час
- Статична угнежђена класа
# 1) Угњежђена унутрашња класа
Угнеждена унутрашња класа има приступ променљивим приватног члана спољне класе. Такође можемо применити модификаторе приступа на угнежђену унутрашњу класу.
# 2) Метод Локални унутрашњи разред
Ово је унутрашња класа која је декларисана унутар методе спољне класе.
# 3) Анонимна унутрашња класа
Анонимна унутрашња класа је унутрашња класа декларисана унутар спољне класе и без икаквог је имена.
# 4) Статична угнежђена класа
Начин на који класа има статичку променљиву члана, она такође може имати статичку класу као свог члана.
Примјер угнежђене / унутрашње класе дат је у наставку:
public class Main { //nested/inner class enclosed inside Main class. class InnerClass { public void inner_print() { System.out.println('Inner class'); } } public static void main(String() args) { System.out.println('Main in Outer class'); } }
Оутпут
Остале посебне класе у Јави
Непроменљива класа у Јави
Непроменљива класа генерише непроменљиве објекте. Непроменљиви објекат је објекат чији се садржај не може мењати након што се објекат креира. Дакле, непроменљива класа је она чији се објекат не може променити једном створен.
Све класе омотача у Јави за примитивне типове (Интегер, Боолеан, Бите, итд.) Су непроменљиве. Класа Стринг је такође непроменљива.
Такође можемо имати кориснички дефинисане непроменљиве класе на Јави.
Да би класа била непроменљива, треба је прогласити коначном заједно са свим члановима података. Такође, класа треба да има параметризовани конструктор. Све променљиве члана треба да имају геттер методу, али не и сеттер методу.
Сви горе наведени захтеви морају бити испуњени да би класа била непроменљива.
шта треба да користите приликом решавања проблема са мрежним каблом под напоном
Применимо Јава програм за демонстрацију непроменљиве класе.
final class City { final String city_name; final int cityId; //parameterised constructor public City(String name, int id) { this.city_name = name; this.cityId = id; } //getters for member variables public String getcityName() { return city_name; } public int getcityId() { return cityId; } } // Driver class class Main { public static void main(String args()) { City city = new City('New York', 1001); System.out.print('City Id:' + city.getcityId() + ' '); System.out.println('City Name:' + city.getcityName()); //city.cityId = 1002; //cannot assign a value to final variable regNo } }
Оутпут
У горе наведеном програму прогласили смо разред града. Ово је завршна класа и у овој класи смо прогласили две променљиве члана и параметризовани конструктор. Такође смо прогласили геттер методе за ове две чланске променљиве. Дакле, класа Цити испуњава све захтеве непроменљиве класе.
Обратите пажњу на коментарисану линију кода у главној методи. Ако некоментирамо ову линију, добићемо грешку компајлера (наведену у коментару овде) док покушавамо да поставимо вредност за променљиву члана.
Синглетон класа у Јави
Једнострука класа дозвољава појединачне инстанце истовремено. У Јави је једно слово дизајн. Овај образац дизајна осигурава да у било ком тренутку постоји само једна инстанца класе. Дакле, свака класа дефинисана као синглетон има једну приступну тачку и то глобалну.
Имајте на уму да прекид животног циклуса апликације не уништава једнокласну класу попут уобичајене класе. Када се класа прогласи једнокрилном, тада не креирамо нову инстанцу сваки пут када се направи нови захтев за објекат.
Иста инстанца се користи изнова и изнова. На овај начин меморијски простор можемо уштедети углавном у случају вишенитних апликација и апликација база података.
Класу синглетон можемо користити за активности попут кеширања, евидентирања итд.
Следећи програм показује класу Синглетон.
class Singleton { // static variable of type Singleton private static Singleton single_instance = null; // String variable public String str; // private constructor : restricted to this class private Singleton() { str = 'Singleton class::private constructor'; } // create instance of Singleton class using getInstance static method public static Singleton getInstance() { if (single_instance == null) single_instance = new Singleton(); return single_instance; } } class Main { public static void main(String args()) { // instantiate Singleton class with obj1 Singleton obj1 = Singleton.getInstance(); // instantiate Singleton class with obj2 Singleton obj2 = Singleton.getInstance(); System.out.println('obj1(str):' + obj1.str); System.out.println('obj2(str):' + obj2.str); // change variable of instance obj1 obj1.str = (obj1.str).toUpperCase(); System.out.println('
After changing obj1(str):'); System.out.println('obj1(str):' + obj1.str); System.out.println('obj2(str):' + obj2.str); } }
Оутпут
У горњем програму смо дефинисали синглетон класу са приватним конструктором. Дефинисали смо променљиву члана Стринг типа. У главној методи декларишемо две инстанце класе синглетон. Затим променимо променљиву Стринг помоћу једне од инстанци.
Када исписујемо вредност Стринг за обе инстанце, примећујемо да се вредност променљиве Стринг променила за обе инстанце. Стога, иако смо променили вредност само за једну инстанцу, због класе синглетон промене се одражавају у свим инстанцама.
Увек враћамо исту инстанцу иако се чини да креирамо различите инстанце.
Класа објекта у Јави
Класа Објецт је родитељска класа или прва класа у Јави. Налази се на највишем нивоу Јава хијерархије.
Како све класе имају класу Објецт као суперкласу, сви Јава објекти укључујући Арраис имплементирају методе класе Објецт. Класа објекта присутна је у пакету „јава.ланг“.
Изјава за јава.ланг.Објецт је:
објекат јавне класе
Следећа табела описује конструкторе и методе класе Објецт.
Конструктор / метода | Опис |
---|---|
Класа гетЦласс () | Враћа класу времена извршавања објекта. |
Конструктор класе објекта | |
Објект () | Конструктор класе објекта |
Методе класе предмета | |
клон заштићеног објекта () | Враћа клон или копију објекта. |
боолеан екуалс (Објецт обј) | Проверава да ли је дати објекат обј једнак овом објекту. |
заштићена празнина финализе () | Позива га сакупљач смећа када се униште све референце на објекат. |
инт хасхЦоде () | Враћа хеш код за објекат. |
воид нотифи () | Користите за буђење једне нити која чека. |
воид нотифиАлл () | Буди све нити које чекају. |
Стринг тоСтринг () | Приказује Стринг еквивалент објекта. |
воид ваит () | Наводи нит да чека док се не пробуди методом обавештавања од стране друге нити. |
неважеће чекање (дуго истек) | Чини да нит чека док не истекне време дато „тимеоут“ или се пробуди методама нотифи или нотифиАлл. |
неважеће чекање (дуго време чекања, инт нанос) | Узрокује да нит чека док одређено време не истекне или док друга нит не позове нотифи () или нотифиАлл (). |
Применимо пример Јава програма који ће показати неке од метода класе Објецт.
public class Main { public static void main(String() args) { Main t = new Main(); System.out.println('Main class Object HashCode:' + t.hashCode()); t = null; // call garbage collector System.gc(); System.out.println('Main class:End'); } @Override protected void finalize() { System.out.println('Main Class::finalize method called.'); } }
Оутпут
Овде имамо главну класу. У главној методи () креирамо објекат класе Маин. Овај објект је потомак класе Објецт и подржава све методе класе Објецт. Стога користимо овај објекат и позивамо неколико метода класе објекта, као што су хасхЦоде (), Систем.ГЦ (), финализе () итд.
Класа омотача у Јави
Јава пружа функцију звану класа омотача која има механизам који претвара примитивни тип података у објект и обрнуто. Класе омотача су класе које представљају примитивне типове попут инт, цхар итд. Као објекте.
Стога сваки примитивни тип података у Јави има одговарајућу класу омотача.
Следећа табела приказује примитивне типове података и њихову еквивалентну класу омотача.
Примитивни тип | Тип омотача |
---|---|
пловак | Пловак |
боолеан | Боолеан |
цхар | Карактер |
бајт | Бајт |
кратак | Кратак |
инт | Цео број |
дуго | Дуго |
двоструко | Доубле |
Да бисмо претворили примитиве у објекте, а објекте у примитиве, имамо технике назване „аутобокинг“ и „бокинг“. Асе Јава је објектно оријентисани програмски језик, увек се бавимо објектима, а имамо и пуно функција као што су Збирке, Серијализација итд. којима су такође потребни објекти и примитивни типови.
Дакле, императив је да су нам увек потребни објекти и примитивни типови на Јави, па су нам потребне ове технике аутоматског и неотпаковања.
Аутобокинг
Аутобокинг је техника аутоматског претварања примитивног типа података у објекат одговарајуће класе омотача. На пример , конверзија инт у класу Интегер, цхар у класу Цхарацтер итд. су примери аутоматског боксања.
Белешка: Класе омотача користе методу валуеОф () за претварање примитива у објекте који су амортизовани од Јаве 5.
Распакивање
Обрнута конверзија објеката класе омотача у њихове одговарајуће примитивне типове података назива се „унбокинг“.
Белешка: Од Јава 5, метода интВалуе () која конвертује објект омотача у примитивни тип се амортизује.
Доље је дат пример боксања / отпакирања.
public class Main { public static void main(String args()){ //Convert int to Integer : boxing int num=20; Integer int_class= Integer.valueOf(num);//explicit conversion from int to Integer Integer inum=num;//autoboxing System.out.println('int => Integer: ' + num+' => '+inum); //Convert Integer to int: unboxing Integer val=new Integer (3); int ival=val.intValue();//explicit conversion from Integer to int int jval=val;//unboxing System.out.println('Integer => int:' + val+' => '+jval); } }
Оутпут
Горњи програм приказује аутоматско кутирање и отпакивање на инт вредности. Прво претварамо инт у Интегер објекат, а затим Интегер објекат претвара се у тип података инт.
Применимо програм који приказује класе омотача присутне у Јави.
public class Main { public static void main(String args()) { byte bbyte=10; short sshort=20; int iint=300; long llong=400; float ffloat=3.14F; double ddouble=77.2D; char cchar='A'; boolean bboolean=true; //Convert primitives into objects => Autoboxing Byte byteobj=bbyte; Short shortobj=sshort; Integer intobj=iint; Long longobj=llong; Float floatobj=ffloat; Double doubleobj=ddouble; Character charobj=cchar; Boolean boolobj=bboolean; //Print converted objects System.out.println('Primitives converted to Objects:'); System.out.println('Byte object: '+byteobj); System.out.println('Short object: '+shortobj); System.out.println('Integer object: '+intobj); System.out.println('Long object: '+longobj); System.out.println('Float object: '+floatobj); System.out.println('Double object: '+doubleobj); System.out.println('Character object: '+charobj); System.out.println('Boolean object: '+boolobj); //Convert Objects to Primitives => Unboxing byte bytevalue=byteobj; short shortvalue=shortobj; int intvalue=intobj; long longvalue=longobj; float floatvalue=floatobj; double doublevalue=doubleobj; char charvalue=charobj; boolean boolvalue=boolobj; //Print primitives System.out.println('Converting Objects to Primitives'); System.out.println('byte value: '+bytevalue); System.out.println('short value: '+shortvalue); System.out.println('int value: '+intvalue); System.out.println('long value: '+longvalue); System.out.println('float value: '+floatvalue); System.out.println('double value: '+doublevalue); System.out.println('char value: '+charvalue); System.out.println('boolean value: '+boolvalue); } }
Оутпут
Горњи излаз програма приказује конверзију из примитивних типова у омотачке објекте (Аутобокинг) и обрће конверзију из омотачких објеката у примитивне типове (унбокинг).
Често постављана питања
П # 1) Који је тип података класе у Јави?
Одговор: Јава нуди класу под називом „Цласс“ која садржи информације о свим класама, објектима и интерфејсима покренуте апликације. Класа Цласс такође представља примитивне типове података и тип воид.
најбоља апликација за преузимање музике за андроид
Класа Цласс је део пакета јава.ланг.
П # 2) Шта је нормална класа у Јави?
Одговор: Нормална класа у Јави је нестатична класа. Помоћу нове кључне речи можемо створити објекте нормалне класе. Такође, свака нормална класа може за члана имати другу класу. У овом случају, класа члана назива се угнежђена или унутрашња класа, а класа која се ограђује назива се спољна класа.
П # 3) Да ли је Стринг омотач класе у Јави?
Одговор: Не, Стринг није класа омотача на Јави. Да би класа била класа омотача, потребан нам је одговарајући примитивни тип. На пример, за класу омотача Интегер имамо примитивни тип инт. За класу Стринг немамо одговарајући примитивни тип података.
П # 4) Која је предност класе омотача?
Одговор: Класе омотача користе се за претварање примитивних типова података у објекте. Другим речима, класе омотача примитивне типове умотавају у објекте. Класе омотача користе се када одређене Јава функције попут Колекција очекују само објекте, а не примитивне типове података.
П # 5) Зашто се Синглетон класа користи у Јави?
Одговор: Кад год желимо глобалну приступну тачку за одређени објекат, ми се одлучимо за једнокраки образац који нам омогућава да дизајнирамо једнокласну класу у којој ће бити само једна инстанца. Синглетон класе се користе у предмеморијама, спремању нити, апликацијама база података, евидентирању итд.
Закључак
У овом упутству смо покрили разне типове класа који се користе у Јави. Видели смо конкретне, апстрактне, коначне, статичне, угнежђене, ПОЈО итд. Класе. Поред тога, разговарали смо и о Синглетон часовима, Непроменљивим часовима, а такође смо разговарали и о примерима њихове примене.
Такође смо покривали класе омотача и класе објеката на Јави. Класе омотача су класе које омотавају примитивне типове података Јава у објекте. Класа објекта у Јави је суперкласа свих осталих класа. То је највиша класа у Јава хијерархији.
Сад кад смо разговарали о класама и објектима у Јави и типовима класа, у следећем упутству ћемо наставити са детаљном дискусијом о конструкторима у Јави.
=> Овде погледајте Перфектни водич за Јава.
Препоручено читање
- Јава интерфејс и лекција са апстрактним часовима са примерима
- Основе Јава-а: Јава синтакса, Јава Цласс и основни Јава концепти
- Шта је статична кључна реч у Јави?
- Јава Интегер и Јава БигИнтегер класа са примерима
- Водич за класу Јава Сцаннер са примерима
- Јава Цласс Вс Објецт - Како се користе класа и објекти у Јави
- Јава Арраи Цласс Туториал - јава.утил.Арраис Цласс са примерима
- Шта је Јава Вецтор | Водич за Јава векторске часове са примерима