В Java, клас е план, от който можем да създадем индивидуален обект. Java предоставя a ключова дума именуван клас, чрез който можем да декларираме клас. Вътре в класа ние дефинираме клас членове и функции. Не е възможно да се създаде Java програми без класа. Можем също да посочим клас като a дефиниран от потребителя Видове класове
В Java има седем типа класове:
Статичен клас
Можем да направим клас статичен ако и само ако е вложен клас. Можем също да кажем, че статичните класове са известни като вложени класове. Това означава, че клас, който е деклариран като статичен в друг клас, е известен като статичен клас. Вложеният статичен клас не изисква препратка към външния клас. Целта на статичен клас е да предостави очертанията на своя наследен клас.
Свойствата на статичния клас са:
- Класът има само статични членове.
- Той няма достъп до члена (нестатичен) на външния клас.
- Не можем да създадем обект от статичния клас.
Нека разберем концепцията за статичен клас чрез програма.
списък като масив
StaticClassExample.java
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
Във външния клас на горната програма сме декларирали променлива ул като статичен, защото имаме достъп до тази променлива от статичен контекст. Ако декларираме тази променлива като нестатична, компилаторът показва грешка, защото вложен статичен клас няма достъп до нестатични членове на външния клас.
Второто нещо, което трябва да се забележи в горната програма е, че за създаването на обекта на вложения клас не е необходимо да създаваме екземпляр на външния клас. Ако вложеният клас не е статичен клас, трябва да създадем екземпляр на външния клас.
Последен клас
Думата окончателен означава, че не може да се промени. The финал клас в Java може да бъде деклариран с помощта на крайна ключова дума . След като декларираме клас като окончателен, стойностите остават същите в цялата програма. Целта на финалния клас е да направи класа неизменен като класа String. Това е само начин да направите класа неизменен. Запомнете, че последният клас не може да бъде удължен . То също не позволява на класа да бъде подклас .
Нека разберем концепцията на финалния клас чрез програма.
FinalClassExample.java
//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
Абстрактен клас
Ан абстрактен клас е a, което е декларирано с ключовата дума абстрактно . Класът може или не може да съдържа абстрактни методи. Не можем да създадем екземпляр на абстрактен клас, но той може да бъде подклас. Тези класове са непълни, така че за да завършим абстрактния клас, трябва да разширим абстрактните класове до конкретен клас. Когато декларираме подклас като абстрактен, тогава е необходимо да осигурим имплементацията на абстрактни методи. Следователно подкласът също трябва да бъде обявен за абстрактен. Можем да постигнем скриване на данни, като използваме абстрактния клас. Пример за абстрактен клас е AbstarctMap клас, който е част от рамката на колекциите.
Нека разберем концепцията за абстрактен клас чрез програма.
AbstractClassExample.java
//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
Клас на бетона
Това са обикновените Java класове. Производен клас, който предоставя основните имплементации за всички методи, които все още не са имплементирани в базовия клас, е известен като бетон клас. С други думи, това са обикновени Java класове, в които са реализирани всички методи на абстрактен клас. Можем директно да създадем обект от конкретния клас. Не забравяйте, че конкретният клас и абстрактният клас не са едно и също. Конкретен клас може да разшири своя родителски клас. Използва се за специфични изисквания.
Нека разберем концепцията на конкретния клас чрез програма.
ConcreteClassExample.java
списък в java
//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
Клас Singleton
Клас, който има само обект в даден момент, е известен като a единичен клас . И все пак, ако се опитваме да създадем екземпляр втори път, този новосъздаден екземпляр сочи към първия екземпляр. Ако сме направили някаква промяна вътре в класа чрез който и да е екземпляр, модификацията засяга и променливата на единичния екземпляр. Обикновено се използва за контрол на достъпа, докато се занимава с връзката към базата данни и програмирането на сокета. Ако искаме да създадем единичен клас, направете следното:
- Създайте частен конструктор .
- Създайте статичен метод (чрез използване на мързелива инициализация), който връща обекта на класа singleton.
SingletonClassExample.java
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
POJO клас
В Java POJO означава Обикновен стар Java обект. Java клас, който съдържа само частни променливи, сетер и гетер, е известен като POJO клас. Използва се за дефиниране на Java обекти, които увеличават повторната употреба и четливостта на Java програма. Класът осигурява капсулиране. Той се използва широко в Java, защото е лесен за разбиране на тези класове. Класът POJO има следните свойства:
- Той не разширява предварително дефинираните класове като масиви, HttpServlet и др.
- Не може да съдържа предварително зададени анотации.
- Не може да изпълнява предварително дефинирани интерфейси .
- Не е необходимо да добавяте конструктор.
- Всички променливи на екземпляра трябва да са лични.
- Геттер/сетер методи трябва да е публичен.
Нека разберем концепцията на POJO клас чрез Java програма.
PojoClassExample.java
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.
Вътрешен клас
Java ни позволява да дефинираме клас в клас и такива класове са известни като вложени класове . Използва се за логическо групиране на класовете и за постигане капсулиране . Членовете на външния клас (включително private) могат да бъдат достъпни от вътрешен клас . Общият синтаксис за деклариране на вложен клас е както следва:
class OuterClass { //code class NestedClass { //code } }
Вложените класове са два вида:
1. Статичен вложен клас: Клас, който е статичен и вложени се нарича статичен вложен клас. Той взаимодейства с члена на екземпляра на своя външен клас. Можем да създадем обект от статичен вложен клас, като използваме следния синтаксис:
OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass();
2. Нестатичен вложен клас: Извикват се нестатични вложени класове вътрешни класове .
Общият синтаксис за деклариране на статичен вложен клас и вътрешен клас е както следва:
class OuterClass { ... static class StaticNestedClass { ... } class InnerClass { ... } }
Нека разберем концепцията за вътрешен клас чрез Java програма.
InnerClassExample.java
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.'); } } }
Видове вътрешни класове
Java предоставя два типа вътрешни класове, както следва:
- Локални класове или метод Локален вътрешен клас
- Анонимни класове или Анонимен вътрешен клас
Местна вътрешна класа
Това е тип вътрешен клас, който е дефиниран вътре в блок. Тук блокът обозначава тяло на метод (група от изрази, оградени между чифт скоби). Поради дефиниране вътре в блок, той е известен също като метод локален вътрешен клас. Това са нестатичните класове, защото имат достъп до членовете на инстанцията на блока. Можем да дефинираме локалните вътрешни класове в тялото на метод. Тези класове трябва да бъдат създадени в блока, в който са дефинирани.
Когато компилираме Java програма (програма, която съдържа вътрешен клас), компилаторът генерира двата файла на класа, а именно Външен.клас и OuterInner.class. Единият за външния клас, а другият за вътрешния клас, който съдържа препратка към външния клас.
Нека разберем концепцията за локален вътрешен клас чрез Java програма.
OuterClass.java
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 } };
Разглеждайки горния синтаксис, виждаме, че той е същият като извикването на конструктор, с изключение на това, че класът има дефиниция, съдържаща се в блока.
AnonymousClassExample.java
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
Java предоставя и друг тип Java клас, известен като обвиващ клас. Нека го обсъдим подробно.
Клас обвивка
В Java терминът клас обвивка представлява колекция от Java класове, които обективизират примитивния тип на Java. Това означава, че за всеки примитивен тип има съответен обвиващ клас. Класовете обвивки се използват за извършване на преобразуване от примитивен тип в обект и обратно. Следващата фигура демонстрира йерархията на класа обвивка.
Следващата таблица представя примитивния тип и съответния клас обвивка.
Примитивен тип | Клас обвивка |
---|---|
булево | Булева стойност |
вътр | Цяло число |
въглен | Характер |
двойно | Двойна |
плавам | Поплавък |
дълго | Дълги |
байт | Байт |
къс | Къс |
Нека разберем класа обвивка чрез Java програма.
WrapperClassExample.java
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