Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Мова РНР.Питання до заліку.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
☆

JavaScript[править | править вики-текст]

var Parent = function( data ) {

this.data = data || false;

this.public_method = function() { return 'Public Method'; }

}

var Child = function() {

this.public_method = function() { return 'Redefined public method'; }

this.getData = function() { return 'Data: ' + this.data; }

}

Child.prototype = new Parent('test');

var Test = new Child();

Test.getData(); // => "Data: test"

Test.public_method(); // => "Redefined public method"

Test.data; // => "test"

Класс Parent является предком для класса Child, у которого переопределен метод public_method. В JavaScript используется прототипное наследование.

Конструкторы и деструкторы[править | править вики-текст]

В С++ конструкторы при наследовании вызываются последовательно от самого раннего предка до самого позднего потомка, а деструкторы наоборот — от самого позднего потомка до самого раннего предка.

class First

{

public:

First() { cout << ">>First constructor" << endl; }

~First() { cout << ">>First destructor" << endl; }

};

class Second: public First

{

public:

Second() { cout << ">Second constructor" << endl; }

~Second() { cout << ">Second destructor" << endl; }

};

class Third: public Second

{

public:

Third() { cout << "Third constructor" << endl; }

~Third() { cout << "Third destructor" << endl; }

};

// выполнение кода

Third *th = new Third();

delete th;

// результат вывода

/*

>>First constructor

>Second constructor

Third constructor

Third destructor

>Second destructor

>>First destructor

*/

12. Абстрактний метод, абстрактний клас. Інтерфейс и, призначення, синтаксис опису, реалізація.

Абстрактный(Abstract) класс - класс, который имеет хотя б 1 абстрактный (не определенный) метод; обозначается как abstract. Интерфейс - такой же абстрактный класс,только в нем не может быть свойств и не определены тела у методов. Так же стоит заметить, что абстрактный класс наследуется(etxends), а интерфейс реализуется (implements). Вот и возникает разница между ними, что наследовать мы можем только 1 класс, а реализовать сколько угодно. ВАЖНО! При реализации интерфейса, необходимо реализовать все его методы, иначе будет Fatal error, так же это можно избежать, присвоив слово abstract. Пример:

interface I {      public function F();      public function say();  }    abstract class A implements I {      function say() {          echo 'Hello';      }      // function F() - не реализована  } 

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

Интерфейс - это абстрактный класс, у которого все методы не реализованы, все публичные и нет переменных класса.

Интерфейс нужен обычно, когда описывается только интерфейс (тавтология). Например, один класс хочет дать другому возможность доступа к некоторым своим методам, но не хочет себя "раскрывать". Поэтому он просто реализует интерфейс.

Абстрактный класс нужен, когда нужно семейство классов, у которых есть много общего. Конечно, можно применить и интерфейс, но тогда нужно будет писать много идентичного кода.

В некоторых языках (С++) специального ключевого слова для обозначения интерфейсов нет.

Можно считать, что любой интерфейс - это уже абстрактный класс, но не наоборот.

Абстрактный класс в объектно-ориентированном программировании — базовый класс, который не предполагает создания экземпляров. Абстрактные классы реализуют на практике один из принципов ООП — полиморфизм. Абстрактный класс может содержать (и не содержать[1]) абстрактные методы исвойства. Абстрактный метод не реализуется для класса, в котором описан, однако должен быть реализован для его неабстрактных потомков. Абстрактные классы представляют собой наиболее общие абстракции, то есть имеющие наибольший объём и наименьшее содержание.

В одних языках создавать экземпляры абстрактных классов запрещено, в других это допускается (например, Delphi), но обращение к абстрактному методу объекта этого класса в процессе выполнения программы приведёт к ошибке. Во многих языках допустимо объявить любой класс абстрактным, даже если в нём нет абстрактных методов (например, Java), именно для запрещения создания экземпляров. Абстрактный класс можно рассматривать в качествеинтерфейса к семейству классов, порождённому им, но, в отличие от классического интерфейса, абстрактный класс может иметь определённые методы, а также свойства.

Абстрактные методы часто являются и виртуальными, в связи с чем понятия «абстрактный» и «виртуальный» иногда путают.