Увод у завршну реч на Јави

У овом посту ћемо погледати различите кључне речи за јаву. То је кључна реч која се у јава језику користи за примену ограничења у њеној употреби или модификацијама од стране других класа или променљивих. Коришћењем ове кључне речи, тумачу се каже да не дозвољава било какве будуће модификације те променљиве или методе и третира је као константну. Може се користити са испод 3 сценарија: -

  1. Променљива: Проглашавање променљиве коначном ограничава њену промену да би се односило на било коју другу вредност или референцу.
  2. Методе: Проглашавање методе коначном ограничава прегласавање методе у дечијим разредима.
  3. Класе: Проглашавање класе коначном спречава наслеђивање те класе.

Ове кључне речи се увек препоручују декларисати великим словима у складу са добрим праксама кодирања.

Синтакса завршне кључне речи у Јави

Ова кључна реч може да се користи на три начина: -

1. Променљива

Варијабле у јави могу се декларирати као променљиве да би ограничиле било какву промену својих вредности. Може се декларирати на било који од испод три начина -

Синтакса:

final int VAR1=21;//final variable
final int VAR2; //blank final variable
static final double DUMMY= 45.504;//final static variable
static final double PK;//blank final static variable

Напомена - Референтне варијабле се такође могу прогласити статичким тако да не може садржавати референцу на други објект. Али због унутрашње природе објекта референце се могу мењати.

финал Стринг буилдер сб = нев СтрингБуилдер („ЛетсЛеарн“);

2. Методе

Каже се да је метода декларирана са коначном кључном реч коначна метода. Коначну методу не може надјачати њена дечија класа, што значи да метода дечије класе не може променити дефиницију коначне методе присутне у родитељској класи. Кад желимо да се примена методе дефинисане у родитељској класи мора следити у свим дечјим класама, тада морамо прогласити ту методу коначном.

Синтакса:

final int my1()(
//method defination
)

3. Часови

Коначне кључне речи се такође могу користити са класама како би коначна класа значила да поједину класу не може проширити или наследити ниједна друга класа.

Синтакса:

final class myClass(
/member variables and member functions.
)

Како коначна кључна реч функционише у Јави?

Завршна кључна реч помаже да се ограничи прегласавање класа, чланова или променљивих током наслеђивања.

1. Финалне променљиве

Проглашавање променљиве коначном значи ограничавање било какве измене вредности променљиве у наслеђеним класама. Коначна варијабла може се иницијализирати само једном и мора се користити онаквом каква јест, те стога мора иницијализирати коначну варијаблу. Најчешће се користи са статичким за стварање константне променљиве класе.

На пример:

final int a =0;

Такође можемо прогласити референтне променљиве коначном, у овом случају једна референтна варијабла се не може односити на различите објекте. Али у Јави се може променити интерно стање објекта које упућује крајња референтна променљива. На тај начин можемо извршити промене вредности референтне променљиве. То је исто као и коришћење коначних низова као што је приказано у наставку: -

Шифра:

class MyClass
(
public static void main(String args())
(
final int myarr() = (1, 2, 3, 4, 5);
for (int q = 0; q < myarr.length; q++)
(
myarr (q) = myarr (q)*10;
System.out.println(myarr (q));
)
)
)

Излаз:

Објашњење

Овдје се низ а1 односи на исти објект само вриједност тог објекта се мијења јер сви знамо да варијабла матрице садржи само почетну адресу меморијске локације у којој су ти елементи низа похрањени.

И на исти начин, ако покушамо да упућујемо различити низ користећи исту променљиву матрицу а1, онда ће компајлер бацити грешку. Стога, кориштењем ријечи-финални низ овдје значи да се свака измјена може извршити члану матрице, али варијабли није допуштено позивање на било који други објект.

Ствари које треба запамтити

Иницијализација финалне променљиве је неопходна да би се спречила грешка у времену превођења. Постоји разлика између Ц ++ цонст варијабли и ових коначних варијабли које цонст варијабле не морају бити иницијализиране. Постоје три начина иницијализације коначне променљиве -

  • Иницијализирајте се у тренутку саме декларације : Лако можемо прогласити коначну променљиву у тренутку њеног проглашавања. У случају да се не иницијализира онда се та варијабла сматра празном коначном променљивом, а било који од следећа два начина може нам помоћи да иницијализирамо празну коначну променљиву.
  • Користећи блок иницијлизатора инстанце : Унутар овог блока или конструктора, празна коначна променљива може се лако иницијализовати. Иако користите конструктор за иницијализацију, увијек запамтите да иницијализира одређену варијаблу у свим доступним конструкторима.
  • Статички блок: Такође се може користити статички блок за иницијализацију празне коначне променљиве. Статички блок се увек покреће једном за сваку класу, па се променљива вредност чије вредности не треба мењати може лако иницијализовати помоћу овог блока.

Тако се коначна кључна реч користи само за ону променљиву која не мора да мења своју вредност током извођења програма. Све крајње варијабле створене унутар методе или блока морају се тамо иницијализирати саме. Такве променљиве типа су познате као локалне крајње променљиве.

Објашњење

У следећем примеру, променљива и је декларисана у оквиру главне функције и иницијализирана такође се сматра коначном локалном променљивом.

Шифра:

class myClass
(
public static void main(String args())
(
// local final variable
final int i;
i = 20;
System.out.println(i);
)
)

Излаз:

2. Завршни методи

Метода која је проглашена коначном не може се прегласити у ниједној поткласи, па се тако назива коначна метода. Методу је потребно прогласити коначном ако тражимо да исту примену класе прате и дечије наставе.

Напомена - Није неопходно да се крајњи методи прогласе у почетној фази наслеђивања (основна класа). Метода се може прогласити коначном у било којем подразреду за који желимо да подкласе слиједе исту дефиницију.

Шифра:

class A(
void myMethod()(
//method definition
)
)
class B extends A(
final void myMethod()(
//overrides the method in parent class
//runs successfully
)
)
class C extends B(
void myMethod()(
//will throw error
)
)

3. Завршна настава

Класе деклариране као завршне не могу се наслиједити ниједне друге класе. Спомињање завршне кључне ријечи прије назива класе упућује преводиоцу да се дефиниција ове класе може користити само онаква каква јесу. Ниједна друга класа не може додати своје спецификације овој дефиницији или поново користити њен код. У случају да се покуша продужити финална класа, преводилац баца грешку што указује да се та класа не жели проширити. Коначне кључне речи у Јави могу се користити у било које за мање од 2 сврхе: -

  1. Прво је спречавање наслеђивања те класе. На пример - све класе Враппер присутне у пакету јава.ланг су завршне класе за њих не можемо их проширити у својим класама, али можемо их користити декларисањем њихових објеката. Сваки покушај приступа тим класама резултираће грешком од стране преводиоца.

final class myParentClass
(
// member variables and member functions
)
// illegal extend.
class myChildClass extends parentClass
(
// Can't subclass A
)

  1. Друга употреба финал са класама је када треба креирати непромењиву класу, тј. Једном када се створи објект класе, не можемо променити његов садржај попут претходно дефинисане класе Стринг. Класа мора бити проглашена коначном како би била непроменљива.

Белешка :

  • Ако је класа декларирана као коначна, онда њени саставни елементи и чланске функције такође сматрају завршним од стране преводилаца.
  • Разред не може бити проглашен апстрактним ако је зависно од дечије класе да испуни његову дефиницију, као и коначну, која спречава само наслеђивање.

Примери завршне кључне речи у Јави

Испод је различит пример завршне кључне речи на Јави:

1. Коришћење коначне променљиве

У доњем примјеру различите варијабле се иницијализирају кориштењем различитих метода. На пример - променљива СЕЦОНД се иницијализује помоћу конструктора док се ТХИРД иницијализира помоћу иницијализатора.

Шифра:

class myClass
(
final int FIRST = 5;
// a blank final variable
final int SECOND;
// another blank final variable
final int THIRD;
FIRST =10; //illegal attempt to change the value of final variable
// a final static variable PI
// direct initialize
static final double MINVALUE = 3.141592653589793;
// a blank final static variable
static final double MAXRANGE;
(
THIRD = 25; // initializer block
)
static(
MAXRANGE = 200.3;
)
public myClass()
(
SECOND = -1;//needs to be initialised in every constructor
)
)

Излаз:

2. Коришћење коначних метода

У примјеру у наставку, апстрактна класа миСхапе изјављује коначне методе гетВидтх и добива осам оних које насљедне класе не морају прегласити. Такође објављује једну апстрактну функцију чија је примена обавезна у следећим класама. Стога је једина дефиниција апстрактне функције имплементирана у првом дечијем разреду и у другом дечијем разреду.

Шифра:

abstract class myShape
(
private double width;
private double height;
public myShape(double width, double height)
(
this.width = width;
this.height = height;
)
public final double getWidth() //override not allowed
(
return width;
)
public final double getHeight() //override not allowed
(
return height;
)
abstract double getArea(); //needs to be defined in the child class
)
class firstChildClass extends myShape
(
public firstChildClass(double width, double height)
(
super(width, height);
)
final double getArea()
(
return this.getHeight() * this.getWidth();
)
)
class secondChildClass extends myShape
(
public secondChildClass(double side)
(
super(side, side);
)
final double getArea()
(
return this.getHeight() * this.getWidth();
)
)
public class myClass
(
public static void main(String() args)
(
myShape s1 = new firstChildClass(10, 20);
myShape s2 = new secondChildClass(10);
System.out.println("width of s1 : "+ s1.getWidth());
System.out.println("height of s1 : "+ s1.getHeight());
System.out.println("width of s2 : "+ s2.getWidth());
System.out.println("height of s2 : "+ s2.getHeight());
System.out.println("area of s1 : "+ s1.getArea());
System.out.println("area of s2 : "+ s2.getArea());
)
)

Излаз:

3. Коришћење финалне класе

У доњем програму користимо финалну класу Солид која дефинира методу за израчунавање волумена облика користећи његове димензије, али приказивање волумена оквира врши се употребом принтВол функције у наслијеђеној класи. Схапе Ас Солид је финална класа, стога класи неће бити дозвољено да га продужи (или наследи). Стога користи објект Схапе за израчунавање волумена било ког облика само преношењем аргумената у функције.

Шифра:

final class Solid (
public double getVol(double length, double width, double height) (
return length * width * height;
)
)
class Shape (
private float length;
private float width;
private float height;
Shape(float length, float width, float height) (
this.length = length;
this.width = width;
this.height = height;
)
public void printVol(Solid bObj) (
double volume = bObj.getVol(this.length, this.width, this.height);
System.out.println("Volume of the Shape: " + volume);
)
)
public class myClass (
public static void main(String() args) (
Solid bObj = new Solid();
Shape obj = new Shape(5, 4, 3);
obj.printVol(bObj);
)
)

Излаз:

Закључак

Завршна кључна реч користи се да спречи да класе, променљиве и методе прегласају њене дечије класе. Такође се може користити да класе буду непроменљиве што ограничава промену вредности његових објеката. Коначна провера кључних речи увек се проверава само у време превођења. Одличан је алат за спречавање поновне употребе дефинисаних променљивих, логике и класа.

Препоручени чланци

Ово је водич за пример Финалне кључне речи у Јави. Овде смо разговарали о томе како финална кључна реч делује у Јави? који укључује финалне променљиве, финалне методе, завршне часове заједно са синтаксом. Такође можете погледати следеће чланке да бисте сазнали више -

  1. Типови и модификатори који се користе за ЈЦомпонент у Јави
  2. Нове функције Јава 8
  3. Како креирати објект у ЈаваСцрипт-у?
  4. Шта је Изјава о случају у ЈаваСцрипт-у?
  5. Тхров вс Тхров | Топ 5 разлика које би требало да знате
  6. Изјава апстрактне класе у Ц # са примером
  7. Употребе и примери ове кључне речи

Категорија: