У чым розніца паміж абстрактнымі і канкрэтнымі метадамі?


адказ 1:

Абстрактны метад не мае цела. Абстрактныя метады існуюць толькі для палімарфізму. Іх трэба перапісваць. Заканчваецца кропкай з коскай.

публічная анатацыя void sing ();

Вы не можаце мець абстрактны метад у неабражаным класе. Калі вы аб'яўляеце абстрактны метад, вы павінны таксама зрабіць клас абстрактным без выключэння.

Але заўважце гэта; Абстрактны клас можа ўтрымліваць як абстрактны, так і неанататычны (канкрэтны) метад.


адказ 2:

Абстрактны метад у абстрактным класе не мае рэалізацыі ў вызначэнні абстрактнага класа. (Ваш .java файл). Ён павінен быць рэалізаваны ў канкрэтным класе, які пашырае ваш абстрактны клас. І абстрактны метад павінен быць абвешчаны ў абстрактным класе. Вы не можаце стварыць абстрактны метад у канкрэтным класе.

Такім чынам, абстрактны клас дапамагае зрабіць некаторыя стандартныя рэалізацыі для ўсіх класаў, якія пашыраюць гэты клас. Акрамя таго, вызначаюцца вядзьмарскія метады (абстрактныя метады), якія неабходна рэалізаваць у пэўных класах.

Абстрактны клас - гэта нешта накшталт інтэрфейсу да рэалізацый. (Няпраўда ва ўсіх аспектах)

Прыклад абстрактнага класа

публічны абстрактны клас Animal {private int sizeInCentiMeter; грамадскія жывёлы (int sizeInCentiMeter) {this.sizeInCentiMeter = sizeInCentiMeter; } // Асноўная рэалізацыя. Немагчыма перапісаць. public int getSizeInCentiMeter () {return sizeInCentiMeter; } // Не мае рэалізацыі. Павінна быць перапісана. публічныя абстрактныя несапраўдныя каналы (feed feed); // Не мае рэалізацыі. Павінна быць перапісана. публічныя абстрактныя булевыя liksFeedType (Feed.FeedBasics feedBasics); }}

І мінімальная рэалізацыя такой жывёлы

качка грамадскага класа пашырана жывёла {грамадская качка () {super (30); } @Override public void feed (Feed feed) {if (feed.feedBasedOn (). Роўна (Feed.FeedBasics.BREAD)) {System.out.println ("Мама мама"); } else {System.out.println ("паляцець"); }} @Override public boolean liksFeedType (Feed.FeedBasics feedBasics) {return feedBasics.equals (Feed.FeedBasics.BREAD); }}

І канал - гэта толькі інтэрфейс. Выглядае так:

грамадскі інтэрфейс Feed {enum FeedBasics {MEET, BREAD, GRASS, FRUITS} булевая жывёлаLikesFeed (жывёла жывёла); FeedBasics feedBasedOn (); }}

Глядзіце таксама

  • Адрозненні паміж абстрактным і інтэрфейсным класам? Чаму Java як праграміст дазваляе мне перапісаць канкрэтныя метады ў базавы клас і зрабіць іх абстрактнымі ў падкласе?

адказ 3:

Абстрактны метад у абстрактным класе не мае рэалізацыі ў вызначэнні абстрактнага класа. (Ваш .java файл). Ён павінен быць рэалізаваны ў канкрэтным класе, які пашырае ваш абстрактны клас. І абстрактны метад павінен быць абвешчаны ў абстрактным класе. Вы не можаце стварыць абстрактны метад у канкрэтным класе.

Такім чынам, абстрактны клас дапамагае зрабіць некаторыя стандартныя рэалізацыі для ўсіх класаў, якія пашыраюць гэты клас. Акрамя таго, вызначаюцца вядзьмарскія метады (абстрактныя метады), якія неабходна рэалізаваць у пэўных класах.

Абстрактны клас - гэта нешта накшталт інтэрфейсу да рэалізацый. (Няпраўда ва ўсіх аспектах)

Прыклад абстрактнага класа

публічны абстрактны клас Animal {private int sizeInCentiMeter; грамадскія жывёлы (int sizeInCentiMeter) {this.sizeInCentiMeter = sizeInCentiMeter; } // Асноўная рэалізацыя. Немагчыма перапісаць. public int getSizeInCentiMeter () {return sizeInCentiMeter; } // Не мае рэалізацыі. Павінна быць перапісана. публічныя абстрактныя несапраўдныя каналы (feed feed); // Не мае рэалізацыі. Павінна быць перапісана. публічныя абстрактныя булевыя liksFeedType (Feed.FeedBasics feedBasics); }}

І мінімальная рэалізацыя такой жывёлы

качка грамадскага класа пашырана жывёла {грамадская качка () {super (30); } @Override public void feed (Feed feed) {if (feed.feedBasedOn (). Роўна (Feed.FeedBasics.BREAD)) {System.out.println ("Мама мама"); } else {System.out.println ("паляцець"); }} @Override public boolean liksFeedType (Feed.FeedBasics feedBasics) {return feedBasics.equals (Feed.FeedBasics.BREAD); }}

І канал - гэта толькі інтэрфейс. Выглядае так:

грамадскі інтэрфейс Feed {enum FeedBasics {MEET, BREAD, GRASS, FRUITS} булевая жывёлаLikesFeed (жывёла жывёла); FeedBasics feedBasedOn (); }}

Глядзіце таксама

  • Адрозненні паміж абстрактным і інтэрфейсным класам? Чаму Java як праграміст дазваляе мне перапісаць канкрэтныя метады ў базавы клас і зрабіць іх абстрактнымі ў падкласе?

адказ 4:

Абстрактны метад у абстрактным класе не мае рэалізацыі ў вызначэнні абстрактнага класа. (Ваш .java файл). Ён павінен быць рэалізаваны ў канкрэтным класе, які пашырае ваш абстрактны клас. І абстрактны метад павінен быць абвешчаны ў абстрактным класе. Вы не можаце стварыць абстрактны метад у канкрэтным класе.

Такім чынам, абстрактны клас дапамагае зрабіць некаторыя стандартныя рэалізацыі для ўсіх класаў, якія пашыраюць гэты клас. Акрамя таго, вызначаюцца вядзьмарскія метады (абстрактныя метады), якія неабходна рэалізаваць у пэўных класах.

Абстрактны клас - гэта нешта накшталт інтэрфейсу да рэалізацый. (Няпраўда ва ўсіх аспектах)

Прыклад абстрактнага класа

публічны абстрактны клас Animal {private int sizeInCentiMeter; грамадскія жывёлы (int sizeInCentiMeter) {this.sizeInCentiMeter = sizeInCentiMeter; } // Асноўная рэалізацыя. Немагчыма перапісаць. public int getSizeInCentiMeter () {return sizeInCentiMeter; } // Не мае рэалізацыі. Павінна быць перапісана. публічныя абстрактныя несапраўдныя каналы (feed feed); // Не мае рэалізацыі. Павінна быць перапісана. публічныя абстрактныя булевыя liksFeedType (Feed.FeedBasics feedBasics); }}

І мінімальная рэалізацыя такой жывёлы

качка грамадскага класа пашырана жывёла {грамадская качка () {super (30); } @Override public void feed (Feed feed) {if (feed.feedBasedOn (). Роўна (Feed.FeedBasics.BREAD)) {System.out.println ("Мама мама"); } else {System.out.println ("паляцець"); }} @Override public boolean liksFeedType (Feed.FeedBasics feedBasics) {return feedBasics.equals (Feed.FeedBasics.BREAD); }}

І канал - гэта толькі інтэрфейс. Выглядае так:

грамадскі інтэрфейс Feed {enum FeedBasics {MEET, BREAD, GRASS, FRUITS} булевая жывёлаLikesFeed (жывёла жывёла); FeedBasics feedBasedOn (); }}

Глядзіце таксама

  • Адрозненні паміж абстрактным і інтэрфейсным класам? Чаму Java як праграміст дазваляе мне перапісаць канкрэтныя метады ў базавы клас і зрабіць іх абстрактнымі ў падкласе?