У Јави, тхе класа је нацрт из којег можемо креирати појединачни објекат. Јава пружа а кључна реч именована класа помоћу које можемо прогласити класу. Унутар класе дефинишемо класа чланови и функције. Није могуће створити Јава програми без класе. Такође можемо означити класу као а кориснички дефинисано Врсте часова
Постоји седам типова класа у Јави:
Статиц Цласс
Можемо направити час статична ако и само ако је угнежђена класа. Такође можемо рећи да су статичке класе познате као угнежђене класе. То значи да је класа која је декларисана као статична унутар друге класе позната као статична класа. Угнежђена статичка класа не захтева референцу на спољашњу класу. Сврха статичке класе је да пружи скицу своје наслеђене класе.
Својства статичке класе су:
- Класа има само статичне чланове.
- Не може приступити члану (нестатичном) спољашње класе.
- Не можемо креирати објекат статичке класе.
Хајде да разумемо концепт статичке класе кроз програм.
СтатицЦлассЕкампле.јава
public class StaticClassExample { private static String str = 'Javatpoint'; //nested class which is a Static class public static class StaticDemo { //non-static method of Static class public void show() { System.out.println(str); } } public static void main(String args[]) { StaticClassExample.StaticDemo obj = new StaticClassExample.StaticDemo(); obj.show(); } }
Излаз:
Javatpoint
У спољашњој класи горњег програма, декларисали смо променљиву стр као статична јер тој променљивој приступамо из статичког контекста. Ако ту променљиву декларишемо као нестатичку, компајлер показује грешку јер угнежђена статичка класа не може да приступи нестатичким члановима спољашње класе.
Друга ствар коју треба приметити у горњем програму је да за креирање објекта угнежђене класе не морамо да креирамо инстанцу спољашње класе. Ако угнежђена класа није статична класа, потребно је да креирамо инстанцу спољашње класе.
јава час математике
Финал Цласс
Реч коначно значи да се не може променити. Тхе коначни класа у Јави може се декларисати помоћу коначна кључна реч . Једном када прогласимо класу као коначну, вредности остају исте током целог програма. Сврха завршног часа је да се направи час непроменљиво као Стринг класа. То је само начин да се класа учини непроменљивом. Запамтите да је завршни разред не може се продужити . Такође спречава да класа буде поткласирана .
Хајде да разумемо концепт завршног часа кроз програм.
ФиналЦлассЕкампле.јава
//base class declared as final final class A { void printmsg() { System.out.print('Base class method is executed.'); } } //derived class //extending a final class which is not possible //it shows the error cannot inherit final class at compile time class B extends A { void printmsg() { System.out.print('Derived class method is executed.'); } } //main class public class FinalClassExample { public static void main(String[] arg) { B obj = new B(); obj.printmsg(); } }
Излаз:
/FinalClassExample.java:11: error: cannot inherit from final A class B extends A
Абстрацт Цласс
Ан апстрактна класа је а који је декларисан са кључном речи апстрактан . Класа може или не мора да садржи апстрактне методе. Не можемо креирати инстанцу апстрактне класе, али она може бити поткласа. Ове класе су некомплетне, па да бисмо завршили апстрактну класу, требало би да проширимо апстрактне класе на конкретну класу. Када подкласу декларишемо као апстрактну онда је неопходно обезбедити имплементацију апстрактних метода. Према томе, поткласа такође мора бити проглашена апстрактном. Сакривање података можемо постићи коришћењем апстрактне класе. Пример апстрактне класе је АбстарцтМап класа која је део оквира Цоллецтионс.
Хајде да разумемо концепт апстрактне класе кроз програм.
АбстрацтЦлассЕкампле.јава
//abstract class abstract class MathematicalOperations { int a=30, b=40; //abstract method public abstract void add(); } public class Operation extends MathematicalOperations { //definition of abstract method public void add() { System.out.println('Sum of a and b is: 'a+b); } public static void main(String args[]) { MathematicalOperations obj = new Operation(); obj.add(); } }
Излаз:
Sum of a and b is: 70
Цонцрете Цласс
Ово су редовне Јава класе. Изведена класа која обезбеђује основне имплементације за све методе које још нису имплементиране у основној класи позната је као бетон класа. Другим речима, то су регуларне Јава класе у којима су имплементиране све методе апстрактне класе. Можемо директно креирати објекат конкретне класе. Запамтите да конкретна класа и апстрактна класа нису исто. Конкретна класа може проширити своју родитељску класу. Користи се за специфичне захтеве.
Хајде да разумемо концепт конкретне класе кроз програм.
ЦонцретеЦлассЕкампле.јава
//Concrete Class public class ConcreteClassExample { //method of the concreted class static int product(int a, int b) { return a * b; } public static void main(String args[]) { //method calling int p = product(6, 8); System.out.println('Product of a and b is: ' + p); } }
Излаз:
Product of a and b is: 48
Синглетон Цласс
Класа која истовремено има само објекат је позната као а синглетон цласс . Ипак, ако покушавамо да креирамо инстанцу други пут, та новостворена инстанца указује на прву инстанцу. Ако смо направили било какву измену унутар класе кроз било коју инстанцу, модификација утиче и на променљиву једне инстанце. Обично се користи за контролу приступа док се бави везом базе података и програмирањем утичнице. Ако желимо да креирамо синглетон класу, урадите следеће:
- Направите приватни конструктор .
- Креирајте статичку методу (користећи лењу иницијализацију) која враћа објекат синглетон класе.
СинглетонЦлассЕкампле.јава
public class Singleton { private String objectState; private static Singleton instance = null; private Singleton() throws Exception { this.objectState = 'Javatpoint'; } public static Singleton getInstance() { if(instance==null) { try { instance=new Singleton(); } catch(Exception e) { e.printStackTrace(); } } return instance; } public String getObjectState() { return objectState; } public void setObjectState(String objectState) { this.objectState = objectState; } }
Излаз:
Javatpoint
ПОЈО Цласс
У Јави, ПОЈО значи Обичан стари Јава објекат. Јава класа која садржи само приватне променљиве, сетер и геттер је позната као ПОЈО класа. Користи се за дефинисање Јава објеката који повећавају могућност поновне употребе и читљивост Јава програма. Класа обезбеђује енкапсулацију. Широко се користи у Јави јер је лако разумети ове класе. ПОЈО класа има следећа својства:
- Не проширује унапред дефинисане класе као што су Арраис, ХттпСервлет, итд.
- Не може да садржи унапред одређене напомене.
- Не може да примени унапред дефинисано интерфејси .
- Није потребно додати никакав конструктор.
- Све променљиве инстанце морају бити приватне.
- Геттер/сеттер методе мора бити јавна.
Хајде да разумемо концепт ПОЈО класе кроз Јава програм.
ПојоЦлассЕкампле.јава
class PojoDemo { //private variable private double price=89764.34; //getter method public double getPrice() { return price; } //setter method public void setPrice(int price) { this.price = price; } } //main class public class PojoClassExample { public static void main(String args[]) { PojoDemo obj = new PojoDemo(); System.out.println('The price of an article is '+ obj.getPrice()+' Rs.'); } }
Излаз:
инстанца јава
The price of an article is 89764.34 Rs.
Унутрашња класа
Јава нам омогућава да дефинишемо класу унутар класе и такве класе су познате као угнежђене класе . Користи се за логичко груписање часова и постизање инкапсулација . Члановима вањске класе (укључујући приватне) може приступити унутрашња класа . Општа синтакса за декларисање угнежђене класе је следећа:
class OuterClass { //code class NestedClass { //code } }
Угнежђене класе су два типа:
1. Статичка угнежђена класа: Класа која је статична и угнездио назива се статичка угнежђена класа. Он је у интеракцији са чланом инстанце своје спољашње класе. Можемо креирати објекат статичке угнежђене класе користећи следећу синтаксу:
OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass();
2. Нестатична угнежђена класа: Позивају се нестатичке угнежђене класе унутрашње класе .
Општа синтакса за декларисање статичке угнежђене класе и унутрашње класе је следећа:
class OuterClass { ... static class StaticNestedClass { ... } class InnerClass { ... } }
Хајде да разумемо концепт унутрашње класе кроз Јава програм.
ИннерЦлассЕкампле.јава
public class InnerClassExample { public static void main(String[] args) { System.out.println('This is outer class.'); } class InnerClass { public void printinner() { System.out.println('This is inner class.'); } } }
Типови унутрашњих класа
Јава пружа две врсте унутрашњих класа:
- Локалне класе или метод Локална унутрашња класа
- Анонимни часови или Анонимоус Иннер Цласс
Локална унутрашња класа
То је врста унутрашње класе која је дефинисана унутар блока. Овде блок означава тело методе (групу исказа затворену између пара заграда). Због дефинисања унутар блока познат је и као локална унутрашња класа методе. Ово су нестатичне класе јер могу приступити члановима инстанце блока. Можемо дефинисати локалне унутрашње класе у телу методе. Ове класе морају бити инстанциране у блоку у којем су дефинисане.
Када компајлирамо Јава програм (програм који садржи унутрашњу класу), компајлер генерише две датотеке класа, тј. Спољна.класа и ОутерИннер.цласс. Један за спољашњу класу, а други за унутрашњу класу која садржи референцу на спољашњу класу.
Хајде да разумемо концепт локалне унутрашње класе кроз Јава програм.
ОутерЦласс.јава
public class OuterClass { private void getValue() { //if you are using Java 7 make the variable final //if you are using Java 8 the code runs successfully int sum = 20; //declaring method local inner class class InnerClass { public int divisor; public int remainder; public InnerClass() { divisor = 4; remainder = sum%divisor; } private int getDivisor() { return divisor; } private int getRemainder() { return sum%divisor; } private int getQuotient() { System.out.println('We are inside the inner class'); return sum / divisor; } } //creating an instance of inner class InnerClass ic = new InnerClass(); System.out.println('Divisor = '+ ic.getDivisor()); System.out.println('Remainder = ' + ic.getRemainder()); System.out.println('Quotient = ' + ic.getQuotient()); } public static void main(String[] args) { //creating an instance of outer class OuterClass oc = new OuterClass(); oc.getValue(); } }
Излаз:
Divisor = 4 Remainder = 0 We are inside the inner class Quotient = 5
Анонимоус Иннер Цласс
То је тип унутрашње класе који је исти као и локалне класе, али једина разлика је у томе што класа нема име класе и од класе се креира један објекат. То чини код концизнијим. Користи се ако желимо да користимо локалну класу једном. Анонимне класе можемо креирати на следећа два начина:
- Коришћењем интерфејса
- Проглашавањем класе конкретном и апстрактном
Синтакса:
// the class may an interface, abstract or concrete class DemoClass obj = new DemoClass() { //methods //data members public void demomethod() { //statements } };
Гледајући горњу синтаксу, видимо да је иста као и позивање конструктора осим што класа има дефиницију садржану у блоку.
АнонимоусЦлассЕкампле.јава
interface Score { int run = 321; void getScore(); } public class AnonymousClassExample { public static void main(String[] args) { // Myclass is hidden inner class of Score interface // whose name is not written but an object to it // is created. Score s = new Score() { @Override public void getScore() { //prints score System.out.print('Score is '+run); } }; s.getScore(); } }
Излаз:
Score is 321
Јава такође пружа још један тип Јава класе познат као класа омотача. Хајде да о томе детаљно разговарамо.
Враппер Цласс
У Јави, термин класа омотача представља колекцију Јава класа које објективизирају примитивни тип Јаве. То значи да за сваки примитивни тип постоји одговарајућа класа омотача. Класе омотача се користе за извођење конверзије из примитивног типа у објекат и обрнуто. Следећа слика приказује хијерархију класа омотача.
Следећа табела представља примитивни тип и одговарајућу класу омотача.
Примитиве Типе | Враппер Цласс |
---|---|
боолеан | Боолеан |
инт | Интегер |
цхар | карактер |
дупло | Двоструко |
пловак | Пловак |
дугачак | Дуго |
бајт | Бите |
кратак | Кратак |
Хајде да разумемо класу омотача кроз Јава програм.
ВрапперЦлассЕкампле.јава
public class WrapperClassExample { public static void main(String args[]) { byte x = 0; //wrapping byte primitive type into Byte object Byte byteobj = new Byte(x); int y = 23; //wrapping int primitive type into Integer object Integer intobj = new Integer(y); char c='m'; //wrapping char primitive type into Character object Character charobj=c; //printing values from objects System.out.println('Byte object byteobj: ' + byteobj); System.out.println('Integer object intobj: ' + intobj); System.out.println('Character object charobj: ' + charobj); } }
Излаз:
Byte object byteobj: 0 Integer object intobj: 23 Character object charobj: m