Абстрактное ключевое слово в PHP

О, я почти забыл. Вот еще несколько ресурсов экранной демонстрации Ruby:

SD Ruby - набора видео онлайн - я нашел их переговоры по Отдыху SD9 и SD10, чтобы быть среди лучших из введений. Другие переговоры по отдыху предполагают знание всего. Эти являются очень вводными и к точке.

Obie Fernandez на InfoQ - Успокоительные направляющие. Я также считал его направляющие Путем книга и нашел его информативным, но действительно длинный обветренный и блуждающий и качество немного непоследовательно. Я узнал о много из этой книги, но чувствовал, что она немного наказывала для прочтения повторения и несоответствующего материала для получения до хороших битов.

Netbeans является хорошей рукой, содержащей IDE, который может учить Вас, что много языка обманывает, если у Вас есть терпение ожидать его подсказок (это - крайне медленный IDE даже на действительно быстрой машине), и можно использовать IDE для графического просматривания доступных генераторов и материала как этот. Получите последние сборки, и Вам даже встроили тест Rspec, работающий.

Борт является предварительно созданным основным приложением с большим количеством стандартных плагинов, уже включенных. Если Вы загружаете его и игра с ним и выясняете, как это - установка, Вы примерно на полпути к созданию Ваших собственных полнофункциональных приложений.

7
задан Johnny 5 December 2009 в 12:31
поделиться

5 ответов

(Надеюсь, это достаточно просто - Не думаю, что у меня получится лучше ^^)

Невозможно создать экземпляр класса abstract : вы можете создать только другой класс, который наследуется от класса abstract , и создать экземпляр этого дочернего класса.

И если вы объявите некоторые методы как abstract , они должны быть определены в дочернем классе, чтобы он мог быть создан.

16
ответ дан 6 December 2019 в 06:50
поделиться

Объявление абстрактного класса означает, что он должен быть подклассом, чтобы его можно было использовать. Невозможно создать экземпляр абстрактного класса. Его можно рассматривать как расширенный интерфейс, который может включать в себя код реализации (в отличие от интерфейса).

Объявляя абстрактный метод, вы заставляете подкласс реализовать этот метод.

7
ответ дан 6 December 2019 в 06:50
поделиться

Определение упомянуто выше, теперь я попытаюсь привести вам пример:

«абстрактный» гарантирует, что вы следуете определенной логике, например, материал билета ВСЕГДА является «бумажным», или на кредитной карте всегда должен быть «код». Это важно, если вы работаете в большой компании со строгой стандартизацией или если вы хотите «заставить» своих разработчиков следовать определенной структуре, чтобы их код не попал в беспорядок.

    abstract class ticket{

    public function material()
    {
        return 'Paper';
    }

}

abstract class creditcard{

    public function material()
    {
        return 'Plastic';
    }

    abstract function setCode(); // the ";" semicolon is important otherwise it will cause an error

}

class key extends ticket{

    public function getMaterial()
    {
        return parent::material();
    }
}

class anotherKey extends creditcard{

    public function setCode($code)
    {
        $this->code = $code;
    }
}

Если мы не определим метод "setCode", анализатор вернет ошибку на " new anotherKey "

2
ответ дан 6 December 2019 в 06:50
поделиться

Хотя вы не можете создать экземпляр абстрактного класса, вы можете объявить конкретные методы / свойства / переменные (в C #, AFAIK), которые будут доступны производному классу

class Program
    {
        static void Main(string[] args)
        {
            Dog a = new Dog();
           //concrete properties and methods in abstract base class 
          //are available to derived class
            a.Name = "SuperDog";
            a.EatFood();
            //And now calling Dog's method
            a.Speak();            
            Console.WriteLine(a.GetType());

        }
    }

    public abstract class Animal
    {
        public string Name { get; set; }
        public void EatFood()
        {
            Console.WriteLine("Eating..");
        }
    }

    public class Dog :Animal
    {
        public void Speak()
        {
            Console.WriteLine("Bow .. Bow");
        }
    }
0
ответ дан 6 December 2019 в 06:50
поделиться

Абстрактные классы используются для фактического отношения типа модели. Это позволяет, например, драйверу базы данных отображать иерархию, цель которой - предоставить общий базовый класс, сигнатуры для методов реальных классов драйверов. Затем реализация выполняется в соответствии с заранее заданными сигнатурами в реальных классах драйверов.

вот пример кода

<?php
abstract class AbstrakteKlasse {
  public abstract function methode();
}

class ImplementierendeKlasse extends AbstrakteKlasse {
  public function methode() {
    print "ImplementierendeKlasse::methode() aufgerufen.\n";
  }
}

$objekt = new ImplementierendeKlasse;
$objekt->methode();
?>
1
ответ дан 6 December 2019 в 06:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: