Middle
რა განსხვავებაა აბსტრაქტულ კლასსა და ინტერფეისს შორის?
sobes.tech AI
პასუხი AI-სგან
აბსტრაქტული კლასი — ეს არის კლასი, რომელიც შეიძლება შეიცავდეს როგორც განხორციელებულ მეთოდებს, ასევე აბსტრაქტულ (განხორციელების გარეშე) მეთოდებს. ის служит საფუძველს მემკვიდრეობისთვის და შეიძლება შეიცავდეს მდგომარეობას (მინდვრებს).
ინტერფეისი — ეს არის კონტრაქტი, რომელიც განსაზღვრავს მეთოდების ნაკრებს გარეშე განხორციელებას (კლასიკური გაგებით). კლასი, რომელიც ახორციელებს ინტერფეისს, ვალდებულია ყველა მისი მეთოდი განახორციელოს.
ძირითადი განსხვავებები:
- აბსტრაქტული კლასი შეიძლება შეიცავდეს განხორციელებას და მდგომარეობას, ინტერფეისი — მხოლოდ მეთოდების ხელმოწერებს (ზოგი ენა, ინტერფეისები შეიძლება შეიცავდეს დეფოლტ მეთოდებს).
- კლასი შეიძლება მემკვიდრეობით მიიღოს მხოლოდ ერთი აბსტრაქტული კლასი, მაგრამ შეუძლია რამდენიმე ინტერფეისი განახორციელოს.
- აბსტრაქტული კლასი უზრუნველყოფს ნაწილობრივ განხორციელებას, ინტერფეისი — მხოლოდ კონტრაქტს.
Java მაგალითი:
abstract class Animal {
void eat() { System.out.println("ჭამა"); }
abstract void sound();
}
interface Flyable {
void fly();
}
class Bird extends Animal implements Flyable {
void sound() { System.out.println("ჩირ ჩირ"); }
public void fly() { System.out.println("ფრენა"); }
}