Arayüz ve soyut kamu fonksiyonu

2 Cevap php

Bu, her iki interface ve abstract function oldukça benzer gibi geliyor bana

bazı yöntem uygulanması gerektiğini bir düzen gibi,

yani ne fark var?

2 Cevap

Have a look at this.

Quoting: (Çok İyi e-satis ile explantion)

Interface

Bir arabirim bir sözleşmedir: arabirimini yazılı adam "hey, ben bu şekilde seyir şeyleri kabul", ve arayüz söylemek kullanarak adam "Tamam, ben yazmak sınıfı bu şekilde görünüyor" söylüyorlar.

And interface is an empty shell, yöntemlerinden sadece imzaları (isim / params / dönüş tipi) vardır. Yöntem herhangi bir şey içermezler. Arayüz şey yapamaz. Bu sadece bir desen var.

Örneğin (sahte kod):

// I say all motor vehicles should look like that :
interface MotorVehicle
{
    void run();

    int getFuel();
}

// my team mate complies and write vehicle looking that way
class Car implements MotoVehicle
{

    int fuel;

    void run()
    {
        print("Wrroooooooom");
    }


    int getFuel()
    {
        return this.fuel;
    }
}

Bu isimler sadece bir demet bir sınıf değil, ve bunun yapmak için pahalı arama yoktur çünkü bir arabirim uygulayan, çok az CPU tüketmek. Böyle gömülü cihazlar gibi konularda zaman harika.

Abstract classes

Soyut sınıflar, arayüzler aksine, sınıflardır. Eğer onlardan miras yapmak için bir arama olduğundan kullanmak daha pahalıdır vardır.

Soyut sınıflar arayüzleri çok benziyor, ama onlar daha çok şey var: onlar için bir davranışını tanımlayabilirsiniz. Bu söyleyerek bir adam hakkında daha fazla bulunuyor "bu sınıfların böyle bakmak gerekir, ve onlar ortak, böylece boşlukları doldurmak var ki!".

örn:

// I say all motor vehicles should look like that :
abstract class MotorVehicle
{

    int fuel;

    // they ALL have fuel, so why let others implement that ?
    // let's make it for everybody
    int getFuel()
    {
         return this.fuel;
    }

    // that can be very different, force them to provide their
    // implementation
    abstract void run();


}

// my team mate complies and write vehicle looking that way
class Car extends MotorVehicule
{
    void run()
    {
        print("Wrroooooooom");
    }
}

By: http://stackoverflow.com/users/9951/e-satis

Çoklu kalıtım olmaksızın dilde, fark oldukça önemlidir. Php veya Java açısından, bir sınıf, çeşitli arayüzleri uygulayabilir, ancak soyut olabilir, tek bir üst sınıfa, devralabilir.

Örneğin c + + olarak, ayrım daha az önemli hale gelir.