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

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

Для использования механизма наследования в PHP необходимо в объявлении класса после имени объявляемого класса-наследника указать словоextends и имя класса-предка:

class Descendant extends Ancestor {

}

В случае перекрытия классом-наследником методов предка, доступ к методам предка можно получить с использованием ключевого слова parent:

class A {

function example() {

echo "Вызван метод A::example().<br />\n";

}

}

class B extends A {

function example() {

echo "Вызван метод B::example().<br />\n";

parent::example();

}

}

Можно предотвратить перекрытие классом-наследником методов предка, для этого необходимо указать ключевое слово final:

class A {

final function example() {

echo "Вызван метод A::example().<br />\n";

}

}

class B extends A {

function example() { //вызовет ошибку

parent::example(); //и никогда не выполнится

}

}

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

@interface A : NSObject

- (void) example;

@end

@implementation

- (void) example

{

NSLog(@"Class A");

}

@end

@interface B : A

- (void) example;

@end

@implementation

- (void) example

{

NSLog(@"Class B");

}

@end

В интерфейсе объявляют методы, которые будут видны снаружи класса (public) Внутрение методы можно реализовывать без интерфейса. Для объявления дополнительных свойств, пользуются interface-extension в файле реализации. Все методы в Objective-C виртуальные.

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

Пример наследования от одного класса и двух интерфейсов:

public class A { }

public interface I1 { }

public interface I2 { }

public class B extends A implements I1, I2 { }

Директива final в объявлении класса делает наследование от него невозможным.

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

Пример наследования от одного класса и двух интерфейсов:

public class A { }

public interface I1 { }

public interface I2 { }

public class B : A, I1, I2 { }

Наследование от типизированных классов можно осуществлять, указав фиксированный тип, либо путем переноса переменной типа в наследуемый класс:

public class A<T>

{ }

public class B : A<int>

{ }

public class B2<T> : A<T>

{ }

Допустимо также наследование вложенных классов от классов, их содержащих:

class A // default class A is internal, not public class B can not be public

{

class B : A { }

}

Директива sealed в объявлении класса делает наследование от него невозможным.[2]

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

class Parent

def public_method

"Public method"

end

private

def private_method

"Private method"

end

end

class Child < Parent

def public_method

"Redefined public method"

end

def call_private_method

"Ancestor's private method: " + private_method

end

end

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

child = Child.new

child.public_method #=> "Redefined public method"

child.call_private_method #=> "Ancestor's private method: Private method"

Приватные методы предка можно вызывать из наследников.