Bu gyzykly we möhüm sorag, Java dörediji wezipesi üçin telefon arkaly söhbetdeşlik wagtynda okyjylarymyň birine berildi. Java dilinde abstrakt synp döretmegiň
Java döredijileriniň köpüsi, sözlemi sebäpli bu soraga jogap berenlerinde bulaşýarlar. Soragy beren adam umumy düşünje bilen tanyş bolsa-da, bir synpyň içindäki abstrakt usuly yglan edeninden soň abstrakt bolup biljekdigine düşünip bilmez we
Bu kody Notepad-a ýazsaňyz we buýruk setirinden javac kömekçi programmasyny ulanyp düzseňiz, şol bir zat bolar. Java spesifikasiýalaryna görä, bir synpyň içinde abstrakt usuly yglan eden badyňyza, bu synp abstrakt synpa öwrülýär we
final
mümkin däldigini bilse-de , soragyň sözleri bilen bulaşdy. Jogap ýönekeý: ýok, final
bir klasda abstrakt usullar bolup bilmez. Näme üçin? Sebäbi Java dil synpynda abstrakt usuly yglan eden badyňyza bu synp awtomatiki abstrakt bolýar we final
Java dilinde abstrakt synp edip bilmersiňiz. Bu “Java-klass” -da abstrakt usullaryň final
bolup bilmejekdigini aňladýar.
final
Java-da abstrakt synp edip bilmersiňiz. Bu nokat bu soragy has ýygy-ýygydan we ýygy-ýygydan berilýän soragdan aýyrýar: Java-da bir wagtyň özünde abstrakt we gutarnykly bir synpy yglan edip bolarmy? final
Bir klasda abstrakt usuly yglan etmegiň mümkin däldigini görkezmek üçin bir mysal koduna seredeliň . Abstrakt usuly bolan Hello.java
synpymyz bar . public final
Hello
print()
public final class Hello {
public abstract void print();
}
Bu kody IDE ýazyň, aşakdaky ýalňyş habary alarsyňyz, Hello
abstrakt usullaryň yglan edilmegi üçin abstrakt synp bolmaly diýýärler.
final
Java-da abstrakt synp edip bilmeýänligiňiz sebäpli, düzüji ýalňyşlyk döreder. Bu, ýokary derejeli synplar we Java dilindäki öýjükli synplar üçin hem dogry. Höweslendirilen synpda abstrakt usuly yglan etseňizem final
, ýalňyşlyk birmeňzeş bolar. Anotherene bir baglanyşykly sorag: Java-da abstrakt synpyň statiki usullary bolup bilermi? Jogap: hawa, edip bilerler, abstrakt synpda statiki usuly yglan etmekde hiç hili mesele ýok, sebäbi statiki usuly ulanmak üçin synpyň mysalyny döretmegiň zerurlygy ýok, olary diňe synpyň adyny ulanyp atlandyryp bolar. Aşakda görkezilişi ýaly Java-da statik bolan synpda Hello
bir usuly goşmak üçin mysalymyzy üýtgedip bileris :main()
public abstract class Hello {
public abstract void print();
public static void main(String args[]) {
// Howой-то code
}
}
Görşüňiz ýaly, hiç hili düzüliş ýalňyşlygy atylmaýar. Bu kod kynçylyksyz düzülýär, sebäbi Java-da abstrakt synpda statiki usuly doly arkaýyn yglan edip bilersiňiz. Gysgaça netijeler Bir synpda abstrakt usuly yglan etmek mümkin däl final
. Sebäbi muny edeniňizden soň, Java aýratynlyklaryna görä synp awtomatiki abstrakt bolýar. Java-da bir klas abstrakt bolup bilmeýändigi sebäpli final
, bu kabul ederliksiz we düzüji size ýalňyşlyk goýbermek bilen gadagan eder. Emma statiki usullary ahyrky we abstrakt synplarda yglan edip bilersiňiz, bu ýerde hiç hili mesele ýok.
GO TO FULL VERSION