~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ C92EC98CC86B710FC4736D99F3360783__1695718920 ✰
Заголовок документа оригинал.:
✰ Comparison of programming languages (object-oriented programming) - Wikipedia ✰
Заголовок документа перевод.:
✰ Сравнение языков программирования (объектно-ориентированное программирование) — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Comparison_of_programming_languages_(object-oriented_programming) ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/c9/83/c92ec98cc86b710fc4736d99f3360783.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/c9/83/c92ec98cc86b710fc4736d99f3360783__translat.html ✰
Дата и время сохранения документа:
✰ 16.06.2024 10:10:07 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 26 September 2023, at 12:02 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Сравнение языков программирования (объектно-ориентированное программирование) — Википедия Jump to content

Сравнение языков программирования (объектно-ориентированное программирование)

Из Википедии, бесплатной энциклопедии

В этом сравнении языков программирования сравнивается то, как объектно-ориентированные языки программирования, такие как C++ , Java , Smalltalk , Object Pascal , Perl , Python и другие, манипулируют структурами данных .

Строительство и разрушение объекта [ править ]

строительство разрушение
ABAP-объекты data variable type ref to class .
create object variable «exporting parameter = argument».
[1]
[2] [3]
АПЛ (Диалог) variable←⎕NEW class «parameters» ⎕EX 'variable'
С++ class variable«(parameters)»;[4] или
class *variable = new class«(parameters)»;[5]
delete pointer;
С# class variable = new class(parameters); variable.Dispose();[3]
Джава [3]
Д destroy(variable);
ЕС class «instance handle» { «properties/data members assignments, instance method overrides» } delete instance handle;
Цель-C ( Какао ) class *variable = [[class alloc ] init]; или
class *variable = [[class alloc ] initWithFoo:parameter «bar:parameter ...»];
[variable release];
Быстрый let variable = class(parameters)
Питон variable = class(parameters) del variable[3] (Обычно не требуется)
Визуальный Бейсик .NET Dim variable As New class(parameters) variable.Dispose()[3]
Содзё Dim variable As New class(parameters) variable = Nil
Эйфелева create variable или
create «{TYPE}» variable.make_foo «(parameters)» или
variable := create {TYPE} или
variable := create {TYPE}.make_foo «(parameters)»
[3]
PHP $variable = new class«(parameters)»; unset($variable);[3]
Перл 5 «my »$variable = class->new«(parameters)»; undef($variable);
Раку «my »$variable = class.new«(parameters)»; $variable.undefine;
Рубин variable = class.new«(parameters)» [3]
Windows PowerShell $variable = New-Object «-TypeName» class ««-ArgumentList» parameters» Remove-Variable «-Name» variable
OCaml let variable = new class «parameters» или
let variable = object members end[6]
[3]
Ф# let variable = «new »class(«parameters»)
Болтовня Класс является объектом.
Просто отправьте сообщение классу, обычно #new или #new:и многие другие, например:
Точка   х:   10   у:   20  . 
  Массив   с:   -1   с:   3   с:   2  . 
JavaScript var variable = new class«(parameters)» или
var variable = { «key1: value1«, key2: value2 ...»»}
[3]
Объектный Паскаль ( Делфи ) ClassVar := ClassType.ConstructorName(parameters); ClassVar.Free;
Скала
val   obj   =   новый   объект   // без параметров 
 val   obj   =   новый   объект  (  arg0  ,   arg1  ,   arg2  ...) 
 val   obj   =   Object  (  arg0  ,   arg1  ,   arg2  ...)   // класс случая 
 val   obj   =   новый   объект  (  arg0  ,   arg1  ,   param1   =   value1  ,   ...)   // именованные параметры 
[3]
КОБОЛ INVOKE class "NEW" RETURNING variable или
MOVE class::"NEW" TO variable
Кобра variable «as class» = class(parameters) variable.dispose
ИСЛИСП (setq variable (create (class <some-class> [:field-1 value-1 [:field-2 value-2] ..]))) [3]

Объявление класса [ править ]

сорт протокол пространство имен
ABAP-объекты class name definition «inheriting from parentclass». «interfaces: interfaces.» method_and_field_declarations endclass.
class name implementation. method_implementations endclass.
interface name. members endinterface.
АПЛ (Диалог) :Class name «:parentclass» «,interfaces»
members
:EndClass
:Interface name
members
:EndInterface
:Namespace name
members
:EndNamespace
С++ class name« : public parentclasses[7] » { members }; namespace name { members }
С# class name« : «parentclass»«, interfaces»» { members } interface name« : parentinterfaces» { members }
Д module name;
members
ЕС class name« : base class» { «default member values assignments» «members» } namespace name;
Джава class name« extends parentclass»« implements interfaces» { members } interface name« extends parentinterfaces» { members } package name; members
PHP namespace name; members
Цель-C @interface name« : parentclass»[8] «< protocols >» { instance_fields } method_and_property_declarations @end
@implementation
name method_implementations @end
[9]
@protocol name«< parentprotocols >» members @end [10]
Быстрый class name« : «parentclass»«, protocols»» { members } protocol name« : parentprotocols» { members }
Питон class name«(parentclasses[7])»:
Tab ↹
members
[11] __all__ = [ member1,member2,... ]
Визуальный Бейсик .NET Class name« Inherits parentclass»« Implements interfaces»
members
End Class
Interface name« Inherits parentinterfaces»
members
End Interface
Namespace name
members
End Namespace
Содзё Class name« Inherits parentclass»« Implements interfaces»
members
End Class
Interface name« Inherits parentinterfaces»
members
End Interface
Module name
members
End Module
Эйфелева class name« inherit parentclasses[7]»
members
end
Перл package name; «@ISA = qw(parentclasses[7]);» members 1; package name; members
Раку class name «is parentclass «is parentclass ...[7]»» «does role «does role ...»» { members } role name «does role «does role ...»» { members } module name { members }
Рубин class name« < parentclass»
members
end
module name
members
end
Windows PowerShell
OCaml class name «parameters» = object «(self)» «inherit parentclass «parameters» «inherit parentclass «parameters» ...[7]»» members end module name
members
Ф# type name«(parameters)» «as this» = class «inherit parentclass«(parameters)» «as base»» members «interface interface with implementation «interface interface with implementation ...»» end type name = interface members end namespace name
members
Болтовня [12] [13]
JavaScript (ES6) class name «extends parentclass» { members }
Объектный Паскаль (Делфи)

ClassName = Class «(ClassParent, Interfaces)»
private
// Private members(include Methods and Fields)
public
// Public members
protected
// Protected members
published
// Published members
end;

package name; members
Скала
класс   ConcreteClass  (  конструктора   параметры  ) 
 расширяет   ParentClass 
 с помощью   Trait1   с   Trait2   с   Trait2   { 
 // члены 
 } 
черта   TraitName 
 расширяет   OtherTrait1 
 с помощью   OtherTrait2   с помощью   OtherTrait3   { 
 // члены 
 } 
 пакета  имя 
КОБОЛ CLASS-ID. name« INHERITS« FROM» parentclasses».
    FACTORY« IMPLEMENTS interfaces».
    class-members
    END FACTORY.
    OBJECT« IMPLEMENTS interfaces».
    instance-members
    END OBJECT.

END CLASS name.

INTERFACE-ID. name« INHERITS« FROM» interfaces».
    members

END INTERFACE name.

Кобра class name «inherits parentclass» «implements interfaces»
Tab ↹ members
interface name «inherits parentinterfaces»
Tab ↹ members
namespace name
Tab ↹ members
ИСЛИСП (defclass name (base-class) ((x :initform 0 :accessor get-x :initarg x)) (:abstractp nil))

Члены класса [ править ]

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

конструктор деструктор финализатор [14]
ABAP-объекты methods constructor «importing parameter = argument»
method constructor. instructions endmethod.
[15]
АПЛ (Диалог) name
:Implements Constructor «:Base «expr»»
instructions
name
:Implements Destructor
instructions
С++ class(«parameters») «: initializers[16] » { instructions } ~class() { instructions }
С# class(«parameters») { instructions } void Dispose(){ instructions } ~class() { instructions }
Д this(«parameters») { instructions } ~this() { instructions }
ЕС class() { instructions } ~class() { instructions }
Джава class(«parameters») { instructions } void finalize() { instructions }
Эйфелева [17] [18]
Цель-C (Какао) - (id)init { instructions... return self; } or
- (id)initWithFoo:parameter «bar:parameter ...» { instructions... return self; }
- (void)dealloc { instructions } - (void)finalize { instructions }
Быстрый init(«parameters») { instructions } deinit { instructions }
Питон def __init__(self«, parameters»):
Tab ↹ instructions
def __del__(self):
Tab ↹ instructions
Визуальный Бейсик .NET Sub New(«parameters»)
instructions
End Sub
Sub Dispose()
instructions
End Sub
Overrides Sub Finalize()
instructions
End Sub
Содзё Sub Constructor(«parameters»)
instructions
End Sub
Sub Destructor()
instructions
End Sub
PHP function __construct(«parameters») { instructions } function __destruct() { instructions }
Перл sub new { my ($class«, parameters») = @_; my $self = {}; instructions ... bless($self, $class); return $self; } sub DESTROY { my ($self) = @_; instructions }
Раку submethod BUILD { instructions } or
«multi » method new(««$self: »parameters») { self.bless(*, field1 => value1, ...); ... instructions }
submethod DESTROY { instructions }
Рубин def initialize«(parameters)»
instructions
end
Windows PowerShell
OCaml initializer instructions[19]
Ф# do instructions or
new(parameters) = expression
[20]
member this.Dispose() = instructions override this.Finalize() = instructions
JavaScript function name(«parameters») { instructions }[21]
JavaScript (ES6) constructor(«parameters») { instructions }
КОБОЛ [22]
Кобра cue init(parameters)
Tab ↹ base.init
Tab ↹ instructions
def dispose
Tab ↹ instructions
ИСЛИСП (defmethod initialize-object ((instance <class-name>) initvalues)

Поля [ править ]

общественный частный защищенный друг
ABAP-объекты public section.[23] data field type type. private section.[23] data field type type. protected section.[23] data field type type. [24]
АПЛ (Диалог) :Field Public field « value» :Field «Private» field « value»
С++ public: type field; private: type field; protected: type field; [25]
С# public type field «= value»; private type field «= value»; protected type field «= value»; internal type field «= value»;
Д package type field «= value»;
Джава protected type field «= value»; type field «= value»;
ЕС public type field; private type field;
Эйфелева feature
field: TYPE
feature {NONE}
field: TYPE
feature {current_class}
field: TYPE
feature {FRIEND}
field: TYPE
Цель-C @public type field; @private type field; @protected type field; @package type field;
Быстрый
Болтовня [26]
Питон self.field = value[27] [28]
Визуальный Бейсик .NET Public field As type «= value» Private field As type «= value» Protected field As type «= value» Friend field As type «= value»
Содзё Public field As type «= value» Private field As type «= value» Protected field As type «= value»
PHP public $field «= value»; private $field «= value»; protected $field «= value»;
Перл $self->{field} = value;[27]
Раку has« type »$.field« is rw» has« type »$!field
Рубин @field = value[27]
Windows PowerShell Add-Member
«-MemberType »NoteProperty
«-Name »Bar «-Value »value
-InputObject variable
OCaml val «mutable» field = value
Ф# let «mutable» field = value
JavaScript this.field = value
this["field"] = value
[27]
КОБОЛ Предложения поля номера уровня . [29]
Кобра var field «as type» «= value» var __field «as type» «= value» var _field «as type» «= value»
ИСЛИСП (field :initform value :accessor accessor-name :initarg keyword)

Методы [ править ]

основной/пустой метод метод возврата стоимости
ABAP-объекты methods name «importing parameter = argument» «exporting parameter = argument» «changing parameter = argument» «returning value(parameter)»
method name. instructions endmethod.
[30]
[31]
АПЛ (Диалог) «left argument» name «right arguments»
instructions
result «left argument» name «right arguments»
instructions
С++ [32]
type foo(«parameters»);

Реализация методов обычно предоставляется в отдельном исходном файле со следующим синтаксисом.

type class::foo(«parameters») { instructions }[33]
void foo(«parameters») { instructions } type foo(«parameters») { instructions ... return value; }
С#
Д
Джава
ЕС void ««type of 'this'»::»foo(«parameters») { instructions } type ««type of this»::»foo(«parameters») { instructions ... return value; }
Эйфелева foo ( «parameters» )
do
instructions
end
foo ( «parameters» ): TYPE
do
instructions...
Result := value
end
Цель-C - (void)foo«:parameter «bar:parameter ...»» { instructions } - (type)foo«:parameter «bar:parameter ...»» { instructions... return value; }
Быстрый func foo(«parameters») { instructions } func foo(«parameters») -> type { instructions... return value }
Питон def foo(self«, parameters»):
Tab ↹
instructions
def foo(self«, parameters»):
Tab ↹
instructions
Tab ↹ return
value
Визуальный Бейсик .NET Sub Foo(«parameters»)
instructions
End Sub
Function Foo(«parameters») As type
instructions
...
Return value
End Function
Содзё Sub Foo(«parameters»)
instructions
End Sub
Function Foo(«parameters») As type
instructions
...
Return value
End Function
PHP function foo(«parameters»)«: void» { instructions } function foo(«parameters»)«: type» { instructions ... return value; }
Перл sub foo { my ($self«, parameters») = @_; instructions } sub foo { my ($self«, parameters») = @_; instructions ... return value; }
Раку «has »«multi »method foo(««$self: »parameters») { instructions } «has «type »»«multi »method foo(««$self: »parameters») { instructions ... return value; }
Рубин def foo«(parameters)»
instructions
end
def foo«(parameters)»
instructions
expression resulting in return value
end
or
def foo«(parameters
instructions
return value
end
Windows PowerShell Add-Member «-MemberType» ScriptMethod «-Name» foo «-Value» { «param(parameters)» instructions } -InputObject variable Add-Member «-MemberType» ScriptMethod «-Name» foo «-Value» { «param(parameters)» instructions ... return value } -InputObject variable
OCaml method foo «parameters» = expression
Ф# member this.foo(«parameters») = expression
JavaScript this.method = function(«parameters») {instructions}
name«.prototype.method = function(«parameters») {instructions}
[34]
this.method = function(«parameters») {instructions... return value;}
name«.prototype.method = function(«parameters») {instructions... return value;}
[34]
Javascript (ES6) foo(«parameters») {instructions} foo(«parameters») {instructions... return value;}
КОБОЛ METHOD-ID. foo.
«DATA DIVISION.
LINKAGE SECTION.
parameter declarations»
PROCEDURE DIVISION« USING parameters».
    instructions

END METHOD foo.

METHOD-ID. foo.
DATA DIVISION.
LINKAGE SECTION.
«parameter declarations»
result-var declaration
PROCEDURE DIVISION« USING parameters» RETURNING result-var.
    instructions

END METHOD foo.

Кобра def foo(parameters)
Tab ↹ instructions
def foo(parameters) as type
Tab ↹ instructions
Tab ↹ return value
ИСЛИСП (defgeneric method (arg1 arg2))
(defmethod method ((arg1 <class1> arg2 <class2>) ...)

Свойства [ править ]

Как задекларировать недвижимость под названием «Бар»

Вручную реализовано [ править ]

читай пиши только для чтения только для записи
ABAP-объекты
АПЛ (Диалог) :Property Bar
result ← Get
instructions

∇ Set arguments
instructions

:EndProperty Bar
:Property Bar
result ← Get
instructions

:EndProperty Bar
:Property Bar
∇ Set arguments
instructions

:EndProperty Bar
С++
С# type Bar {
get {
instructions ... return value; }
set {
instructions } }
type Bar { get { instructions ... return value; } } type Bar { set { instructions } }
Д @property type bar() { instructions ... return value; }
@property
type bar(type value) { instructions ... return value; }
@property type bar() { instructions ... return value; } @property type bar(type value) { instructions ... return value; }
ЕС property type Bar {
get {
instructions ... return value; }
set {
instructions } }
property type Bar { get { instructions ... return value; } } property type Bar { set { instructions } }
Джава
Цель-C 2.0 (Какао) @property (readwrite) type bar;
а затем внутри
@implementation
- (type)bar { instructions }
- (void)setBar:(type)value { instructions }
@property (readonly) type bar;
а затем внутри
@implementation
- (type)bar { instructions }
Быстрый var bar : type { get { instructions } set«(newBar)» { instructions } } var bar : type { instructions }
Эйфелева feature -- Access
x: TYPE assign set_x
feature -- Settings
set_x (a_x: like x) do instructions ensure x_set: verification end
Питон def setBar(self, value):
Tab ↹ instructions
def
getBar(self):
Tab ↹
instructions
Tab ↹ return value
bar = property(getBar, setBar)
[35]
def getBar(self):
Tab ↹ instructions
Tab ↹ return value
bar = property(getBar)
def setBar(self, value):
Tab ↹ instructions
bar = property(fset = setBar)
Визуальный Бейсик .NET Property Bar() As type
Get
instructions
Return value
End Get
Set (ByVal
Value As type)
instructions
End Set
End Property
ReadOnly Property Bar() As type
Get
instructions
Return value
End Get
End Property
WriteOnly Property Bar() As type
Set (ByVal Value As type)
instructions
End Set
End Property
Содзё ComputedProperty Bar() As type
Get
instructions
Return value
End Get
Set (ByVal
Value As type)
instructions
End Set
End ComputedProperty
ComputedProperty Bar() As type
Get
instructions
Return value
End Get
End ComputedProperty
ComputedProperty Bar() As type
Set (value As type)
instructions
End Set
End ComputedProperty
PHP function __get($property) {
switch (
$property) {
case
'Bar' : instructions ... return value;
} }
function __set(
$property, $value) {
switch (
$property) {
case
'Bar' : instructions
} }
function __get($property) {
switch ($
property) {
case
'Bar' : instructions ... return value;
} }
function __set($property, $value) {
switch (
$property) {
case
'Bar' : instructions
} }
Перл sub Bar {
my $self = shift;
if (my $Bar = shift) {
# setter
$self->{Bar} = $Bar;
return $self;
} else {
# getter
return $self->{Bar};
}
}
sub Bar {
my $self = shift;
if (my $Bar = shift) {
# read-only
die "Bar is read-only\n";
} else {
# getter
return $self->{Bar};
}
}
sub Bar {
my $self = shift;
if (my $Bar = shift) {
# setter
$self->{Bar} = $Bar;
return $self;
} else {
# write-only
die "Bar is write-only\n";
}
}
Раку
Рубин def bar
instructions
expression resulting in return value
end
def bar=(value)
instructions
end
def bar
instructions
expression resulting in return value
end
def bar=(value)
instructions
end
Windows PowerShell Add-Member
«-MemberType »ScriptProperty
«-Name »Bar «-Value »{ instructions ... return value }
«-SecondValue »{ instructions }
-InputObject variable
Add-Member
«-MemberType »ScriptProperty
«-Name »Bar «-Value »{ instructions ... return value}
-InputObject variable
Add-Member
«-MemberType »ScriptProperty
«-Name »Bar -SecondValue { instructions }
-InputObject variable
OCaml
Ф# member this.Bar with get() = expression and set(value) = expression member this.Bar = expression member this.Bar with set(value) = expression
JavaScript (ES6) get bar(«parameters») { instructions ... return value}set bar(«parameters») { instructions } get bar(«parameters») { instructions ... return value} set bar(«parameters») { instructions }
КОБОЛ METHOD-ID. GET PROPERTY bar.
DATA DIVISION.
LINKAGE SECTION.
return-var declaration
PROCEDURE DIVISION RETURNING return-var.
    instructions

END METHOD.
METHOD-ID. SET PROPERTY bar.
DATA DIVISION.
LINKAGE SECTION.
value-var declaration
PROCEDURE DIVISION USING value-var.

    instructions

END METHOD.

METHOD-ID. GET PROPERTY bar.
DATA DIVISION.
LINKAGE SECTION.
return-var declaration
PROCEDURE DIVISION RETURNING return-var.
    instructions

END METHOD.

METHOD-ID. SET PROPERTY bar.
DATA DIVISION.
LINKAGE SECTION.
value-var declaration
PROCEDURE DIVISION USING value-var.
    instructions

END METHOD.

Кобра pro bar «as type»
Tab ↹ get
Tab ↹Tab ↹ instructions
Tab ↹Tab ↹ return value
Tab ↹ set
Tab ↹Tab ↹ instructions
get bar «as type»
Tab ↹ instructions
Tab ↹ return value
set bar «as type»
Tab ↹ instructions
ИСЛИСП

Автоматически реализовано [ править ]

читай пиши только для чтения только для записи
ABAP-объекты
С++
С# type Bar { get; set; } type Bar { get; private set; } type Bar { private get; set; }
Д
Джава
Цель-C 2.0 (Какао) @property (readwrite) type bar;
а затем внутри @implementation
@synthesize bar;
@property (readonly) type bar;
а затем внутри @implementation
@synthesize bar;
Быстрый var bar : type let bar : type
Эйфелева
Питон @property
def bar(self):
Tab ↹instructions
@bar.setter
def bar(self, value):
Tab ↹instructions
@property
def bar(self):
Tab ↹instructions
bar = property()
@bar.setter
def bar(self, value):
Tab ↹instructions
Визуальный Бейсик .NET Property Bar As type« = initial_value» (VB 10)
PHP
Перл [36] use base qw(Class::Accessor);
__PACKAGE__->mk_accessors('Bar');
use base qw(Class::Accessor);
__PACKAGE__->mk_ro_accessors('Bar');
use base qw(Class::Accessor);
__PACKAGE__->mk_wo_accessors('Bar');
Раку
Рубин attr_accessor :bar attr_reader :bar attr_writer :bar
Windows PowerShell
OCaml
Ф# member val Bar = value with get, set
КОБОЛ level-number bar clauses PROPERTY. level-number bar clauses PROPERTY «WITH» NO SET. level-number bar clauses PROPERTY «WITH» NO GET.
Кобра pro bar from var «as type» get bar from var «as type» set bar from var «as type»

Перегруженные операторы [ править ]

Стандартные операторы [ править ]

унарный двоичный вызов функции
ABAP-объекты
С++ type operator symbol () { instructions } type operator symbol (type operand2) { instructions } type operator () («parameters») { instructions }
С# static type operator symbol(type operand) { instructions } static type operator symbol(type operand1, type operand2) { instructions }
Д type opUnary(string s)() if (s == "symbol") { instructions } type opBinary(string s)(type operand2) if (s == "symbol") { instructions }
type opBinaryRight(string s)(type operand1) if (s == "symbol") switch (s) { instructions }
type opCall(«parameters») { instructions }
Джава
Цель-C
Быстрый func symbol(operand1 : type) -> returntype { instructions } (вне класса) func symbol(operand1 : type1, operand2 : type2) -> returntype { instructions } (вне класса)
Эйфелева [37] op_name alias "symbol": TYPE
do instructions end
op_name alias "symbol" (operand: TYPE1): TYPE2
do instructions end
Питон def __opname__(self):
Tab ↹
instructions
Tab ↹ return
value
def __opname__(self, operand2):
Tab ↹
instructions
Tab ↹ return
value
def __call__(self«, parameters»):
Tab ↹
instructions
Tab ↹ return
value
Визуальный Бейсик .NET Shared Operator symbol(operand As type) As type
instructions
End Operator
Shared Operator symbol(operand1 As type, operand2 As type) As type
instructions
End Operator
Содзё Function Operator_name(operand As type) As type
instructions
End Function
PHP [38] function __invoke(«parameters») { instructions } (PHP 5.3+)
Перл use overload "symbol" => sub { my ($self) = @_; instructions }; use overload "symbol" => sub { my ($self, $operand2, $operands_reversed) = @_; instructions };
Раку «our «type »»«multi »method prefix:<symbol> («$operand: ») { instructions ... return value; } or
«our «type »»«multi »method postfix:<symbol> («$operand: ») { instructions ... return value; } or
«our «type »»«multi »method circumfix:<symbol1 symbol2> («$operand: ») { instructions ... return value; }
«our «type »»«multi »method infix:<symbol> («$operand1: » type operand2) { instructions ... return value; } «our «type »»«multi »method postcircumfix:<( )> («$self: » «parameters») { instructions }
Рубин def symbol
instructions
expression resulting in return value
end
def symbol(operand2)
instructions
expression resulting in return value
end
Windows PowerShell
OCaml
Ф# static member (symbol) operand = expression static member (symbol) (operand1, operand2) = expression
КОБОЛ
ИСЛИСП

Индексаторы [ править ]

читай пиши только для чтения только для записи
ABAP-объекты
АПЛ (Диалог) :Property Numbered Default name
result ← Get
instructions

∇ Set arguments
instructions

:EndProperty Bar
:Property Numbered Default Bar
result ← Get
instructions

:EndProperty Bar
:Property Numbered Default Bar
∇ Set arguments
instructions

:EndProperty Bar
С++ type& operator[](type index) { instructions } type operator[](type index) { instructions }
С# type this[type index] {
get{
instructions }
set{
instructions } }
type this[type index] { get{ instructions } } type this[type index] { set{ instructions } }
Д type opIndex(type index) { instructions }
type opIndexAssign(type value, type index) { instructions }
type opIndex(type index) { instructions } type opIndexAssign(type value, type index) { instructions }
Джава
Objective-C (последний компилятор Clang) - (id)objectAtIndexedSubscript:(NSUInteger)index { instructions return value; } or
- (id)objectForKeyedSubscript:(id)index { instructions return value; }
- (void)setObject:(id)value atIndexedSubscript:(NSUInteger)index { instructions } or
- (void)setObject:(id)value forKeyedSubscript:(id)index { instructions }
Быстрый subscript (index : type) -> returntype { get { instructions } set«(newIndex)» { instructions } } subscript (index : type) -> returntype { instructions }
Эйфелева [37] bracket_name alias "[]" (index: TYPE): TYPE assign set_item
do instructions end
set_item (value: TYPE; index: TYPE):
do instructions end
bracket_name alias "[]" (index: TYPE): TYPE
do instructions end
Питон def __getitem__(self, index):
Tab ↹ instructions
Tab ↹ return value
def __setitem__(self, index, value):
Tab ↹ instructions
def __getitem__(self, index):
Tab ↹ instructions
Tab ↹ return value
def __setitem__(self, index, value):
Tab ↹ instructions
Визуальный Бейсик .NET Default Property Item(Index As type) As type
Get
instructions
End Get
Set(ByVal
Value As type)
instructions
End Set
End Property
Default ReadOnly Property Item(Index As type) As type
Get
instructions
End Get
End Property
Default WriteOnly Property Item(Index As type) As type
Set(ByVal
Value As type)
instructions
End Set
End Property
PHP [39]
Перл [40]
Раку «our «type »»«multi »method postcircumfix:<[ ]> is rw («$self: » type $index) { instructions ... return value; } or
«our «type »»«multi »method postcircumfix:<{ }> is rw («$self: » type $key) { instructions ... return value; }
«our «type »»«multi »method postcircumfix:<[ ]>(«$self: » type $index) { instructions ... return value; } or
«our «type »»«multi »method postcircumfix:<{ }> («$self: » type $key) { instructions ... return value; }
Рубин def [](index)
instructions
expression resulting in return value
end
def []=(index, value)
instructions
end
def [](index)
instructions
expression resulting in return value
end
def []=(index, value)
instructions
end
Windows PowerShell
OCaml
Ф# member this.Item with get(index) = expression and set index value = expression member this.Item with get(index) = expression member this.Item with set index value = expression
КОБОЛ
Кобра pro[index «as type»] as type
Tab ↹ get
Tab ↹Tab ↹ instructions
Tab ↹Tab ↹ return value
Tab ↹ set
Tab ↹Tab ↹ instructions
get[index «as type»] as type
Tab ↹ instructions
Tab ↹ return value
set[index «as type»] as type
Tab ↹ instructions

Приведение типов [ править ]

подавленный поднятый вверх
ABAP-объекты
С++ operator returntype() { instructions }
С# static explicit operator returntype(type operand) { instructions } static implicit operator returntype(type operand) { instructions }
Д T opCast(T)() if (is(T == type)) { instructions }
ЕС property T { get { return «conversion code»; } }
Джава
Цель-C
Эйфелева [37]
Питон
Визуальный Бейсик .NET Shared Narrowing Operator CType(operand As type) As returntype
instructions
End Operator
Shared Widening Operator CType(operand As type) As returntype
instructions
End Operator
PHP
Перл
Раку multi method type«($self:)» is export { instructions }
Рубин
Windows PowerShell
OCaml
Ф#
КОБОЛ

Доступ для участников [ править ]

Как получить доступ к членам объекта x

член объекта член класса член пространства имен
метод поле свойство
ABAP-объекты x->methodparameters»).[41] x->field x=>field or x=>methodparameters[41]»).
С++ x.method(parameters) or
ptr->method(parameters)
x.field or
ptr->field
cls::member ns::member
Цель-C [x method«:parameter «bar:parameter ...»»] x->field x.property (2.0 only) or
[x property]
[cls method«:parameter «bar:parameter ...»»]
Болтовня x method«:parameter «bar:parameter ...»» cls method«:parameter «bar:parameter ...»»
Быстрый x.method(parameters) x.property cls.member
АПЛ (Диалог) left argument» x.method «right argument(s)» x.field x.property cls.member ns.member
С# x.method(parameters)
Джава
Д x.property
Питон
Визуальный Бейсик .NET
Содзё
Windows PowerShell [cls]::member
Ф# cls.member
ЕС x.method«(parameters)» x.field x.property cls::member ns::member
Эйфелева x.method«(parameters)» x.field {cls}.member
Рубин x.property cls.member
PHP x->method(parameters) x->field x->property cls::member ns\member
Перл x->method«(parameters)» x->{field} cls->method«(parameters)» ns::member
Раку x.method«(parameters)» or
x!method«(parameters)»
x.field or
x!field
cls.method«(parameters)» or
cls!method«(parameters)»
ns::member
OCaml x#method «parameters»
JavaScript x.method(parameters)
x["method"](parameters)
x.field
x["field"]
x.property
x["property"]
cls.member
cls["member"]
КОБОЛ INVOKE x "method" «USING parameters» «RETURNING result» or
x::"method"«(«parameters»)»
property OF x INVOKE cls "method" «USING parameters» «RETURNING result» or
cls::"method"«(«parameters»)» or
property OF cls
Кобра x.method«(parameters)» x.field x.property cls.member ns.member

Доступность участников [ править ]

Имеет член? Обработчик отсутствующего члена
Метод Поле Метод Поле
АПЛ (Диалог) 3=x.⎕NC'method' 2=x.⎕NC'method'
ABAP-объекты
С++
Цель-C (Какао) [x respondsToSelector:@selector(method)] forwardInvocation:
Болтовня x respondsTo: selector doesNotUnderstand:
С# (используя отражение)
ЕС
Джава
Д opDispatch()
Эйфелева
Питон hasattr(x, "method") and callable(x.method) hasattr(x, "field") __getattr__()
Визуальный Бейсик .NET (используя отражение)
Содзё (используя самоанализ)
Windows PowerShell (используя отражение)
Ф# (используя отражение)
Рубин x.respond_to?(:method) method_missing()
PHP method_exists(x, "method") property_exists(x, "field") __call() __get() / __set()
Перл x->can("method") exists x->{field} АВТОЗАГРУЗКА
Раку x.can("method") x.field.defined АВТОЗАГРУЗКА
OCaml
JavaScript typeof x.method === "function" field in x
КОБОЛ

Специальные переменные [ править ]

текущий объект текущего объекта родительский объект нулевая ссылка Текущий контекст выполнения
Болтовня self super nil thisContext
ABAP-объекты me super initial
АПЛ (Диалог) ⎕THIS ⎕BASE ⎕NULL
С++ *this [42] NULL, nullptr
С# this base[43] null
Джава super[43]
Д
JavaScript super[43] (ECMAScript 6) null, undefined[44]
ЕС this null
Цель-C self super[43] nil
Быстрый self super[43] nil[45]
Питон self[46] super(current_class_name, self)[7]
super() (только 3.x)
None
Визуальный Бейсик .NET Me MyBase Nothing
Содзё Me / Self Parent Nil
Эйфелева Current Precursor «{superclass}» «(args)»[43] [47] Void
PHP $this parent[43] null
Перл $self[46] $self->SUPER[43] undef
Раку self SUPER Nil
Рубин self super«(args)»[48] nil binding
Windows PowerShell $this $NULL
OCaml self[49] super[50] [51]
Ф# this base[43] null
КОБОЛ SELF SUPER NULL
Кобра this base nil

Специальные методы [ править ]

Строковое представление Копия объекта Равенство ценностей Сравнение объектов Хэш-код Идентификатор объекта
Человек читаемый Совместимость с исходным кодом
ABAP-объекты
АПЛ (Диалог) x ⎕SRC x ⎕NS x x = y
С++ x == y[52] указатель на объект может быть преобразован в целочисленный идентификатор
С# x.ToString() x.Clone() x.Equals(y) x.CompareTo(y) x.GetHashCode() System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(x)
Джава x.toString() x.clone()[53] x.equals(y) x.compareTo(y)[54] x.hashCode() System.identityHashCode(x)
JavaScript x.toString()
Д x.toString() or
std.conv.to!string(x)
x.stringof x == y or
x.opEquals(y)
x.opCmp(y) x.toHash()
ЕС x.OnGetString(tempString, null, null) or
PrintString(x)
y.OnCopy(x) x.OnCompare(y) дескриптор объекта может быть преобразован в целочисленный идентификатор
Цель-C (Какао) x.description x.debugDescription [x copy][55] [x isEqual:y] [x compare:y][56] x.hash указатель на объект может быть преобразован в целочисленный идентификатор
Быстрый x.description[57] x.debugDescription[58] x == y[59] x < y[60] x.hashValue[61] reflect(x).objectIdentifier!.uintValue()
Болтовня x displayString x printString x copy x = y x hash x identityHash
Питон str(x)[62] repr(x)[63] copy.copy(x)[64] x == y[65] cmp(x, y)[66] hash(x)[67] id(x)
Визуальный Бейсик .NET x.ToString() x.Clone() x.Equals(y) x.CompareTo(y) x.GetHashCode()
Эйфелева x.out x.twin x.is_equal(y) Когда х COMPARABLE, можно просто сделать x < y Когда х HASHABLE, можно использовать x.hash_code Когда х IDENTIFIED, можно использовать x.object_id
PHP $x->__toString() clone x[68] x == y spl_object_hash(x)
Перл "$x"[69] Data::Dumper->Dump([$x],['x'])[70] Storable::dclone($x)[71] Scalar::Util::refaddr( $x )[72]
Раку ~x[69] x.perl x.clone x eqv y x cmp y x.WHICH
Рубин x.to_s x.inspect x.dup or
x.clone
x == y or
x.eql?(y)
x <=> y x.hash x.object_id
Windows PowerShell x.ToString() x.Clone() x.Equals(y) x.CompareTo(y) x.GetHashCode()
OCaml Oo.copy x x = y Hashtbl.hash x Oo.id x
Ф# string x or x.ToString() or sprintf "%O" x sprintf "%A" x x.Clone() x = y or x.Equals(y) compare x y or x.CompareTo(y) hash x or x.GetHashCode()
КОБОЛ

Тип манипуляции [ править ]

Получить тип объекта Является экземпляром (включая подтипы) Upcasting Даункастинг
Проверка времени выполнения Нет чека
ABAP-объекты [73] = ?=
С++ typeid(x) dynamic_cast<type *>(&x) != nullptr [74] dynamic_cast<type*>(ptr) (type*) ptr or
static_cast<type*>(ptr)
С# x.GetType() x is type (type) x or x as type
Д typeid(x) cast(type) x
Дельфи x is type x as type
ЕС x._class eClass_IsDerived(x._class, type) (type) x
Джава x.getClass() x instanceof class (type) x
Цель-C (Какао) [x class][75] [x isKindOfClass:[class class]] (type*) x
Быстрый x.dynamicType x is type x as! type
x as? type
JavaScript x.constructor (If not rewritten.) x instanceof class [76]
Визуальный Бейсик .NET x.GetType() TypeOf x Is type [74] CType(x, type) or TryCast(x, type)
Содзё Introspection.GetType(x) x IsA type CType(x, type)
Эйфелева x.generating_type attached {TYPE} x attached {TYPE} x as down_x
Питон type(x) isinstance(x, type) [76]
PHP get_class(x) x instanceof class
Перл ref(x) x->isa("class")
Раку x.WHAT x.isa(class) [74] type(x) or
x.type
Рубин x.class x.instance_of?(type) or
x.kind_of?(type)
[76]
Болтовня x class x isKindOf: class
Windows PowerShell x.GetType() x -is [type] [74] [type]x or x -as [type]
OCaml [77] (x :> type)
Ф# x.GetType() x :? type (x :?> type)
КОБОЛ x AS type[74]

Управление пространством имен [ править ]

Импортировать пространство имен Импортировать элемент
квалифицированный неквалифицированный
ABAP-объекты
С++ using namespace ns; using ns::item ;
С# using ns; using item = ns.item;
Д import ns; import ns : item;
Джава import ns.*; import ns.item;
Цель-C
Визуальный Бейсик .NET Imports ns
Эйфелева
Питон import ns from ns import * from ns import item
PHP use ns; use ns\item;
Перл use ns; use ns qw(item);
Раку
Рубин
Windows PowerShell
OCaml open ns
Ф#
КОБОЛ

Контракты [ править ]

Предварительное условие Постусловие Проверять Инвариант Петля
ABAP-объекты
С++
С# Spec#:
type foo( «parameters» )
    requires expression
{
    body
}
Spec#:
type foo( «parameters» )
    ensures expression
{
    body
}
Джава
Цель-C
Визуальный Бейсик .NET
Д f
in { asserts }
body{
instructions }
f
out (result) { asserts }
body{
instructions }
assert(expression) invariant() { expression }
Эйфелева f
require tag: expression
do end
f
do
ensure
tag: expression
end
f
do
check tag: expression end
end
class X
invariant tag: expression
end
from instructions
invariant
tag: expression
until
expr
loop
instructions
variant
tag: expression
end
Питон
PHP
Перл
Раку PRE { condition } POST { condition }
Рубин
Windows PowerShell
OCaml
Ф#
КОБОЛ

См. также [ править ]

Ссылки и примечания [ править ]

  1. ^ параметр = аргумент может повторяться, если у конструктора несколько параметров
  2. ^ SAP оставил за собой возможность разрушения
  3. ^ Перейти обратно: а б с д Это ж г час я дж к л Этот язык использует сбор мусора для освобождения неиспользуемой памяти.
  4. ^ Этот синтаксис создает значение объекта с автоматической продолжительностью хранения.
  5. ^ Этот синтаксис создает объект с динамическим сроком хранения и возвращает указатель на него.
  6. ^ Объекты OCaml можно создавать напрямую, минуя класс.
  7. ^ Перейти обратно: а б с д Это ж г Этот язык поддерживает множественное наследование . Класс может иметь более одного родительского класса
  8. ^ Отсутствие родительского класса делает класс корневым. На практике этого почти никогда не делается. Обычно следует использовать обычный базовый класс используемой структуры, который NSObject для Какао и GNUstep или Object в противном случае.
  9. ^ Обычно @interface часть помещается в заголовочный файл , а @interface часть помещается в отдельный файл исходного кода.
  10. ^ Префиксы к именам классов и протоколов, традиционно используемые как своего рода пространство имен.
  11. ^ В интерфейсах Python — это классы, методы которых являются их телами.
  12. ^ Класс является объектом.
    Просто отправьте сообщение в суперкласс (st-80) или в пространство имен назначения (Visualworks).
  13. ^ Пространство имен является объектом.
    Просто отправьте сообщение в родительское пространство имен.
  14. ^ Финализатор вызывается сборщиком мусора , когда объект готовится к сбору мусора. Нет никакой гарантии, когда он будет вызван и будет ли он вызван вообще.
  15. ^ В ABAP конструктор должен быть определен как метод (см. комментарии к методу) со следующими ограничениями: имя метода должно быть «конструктор», и могут быть определены только «импортирующие» параметры.
  16. ^ Здесь находится необязательный список инициализаторов, разделенных запятыми, для объектов-членов и родительских классов. Синтаксис инициализации объектов-членов:
    "member_name(parameters)"
    Это работает даже для примитивных членов: в этом случае указывается один параметр, и это значение копируется в элемент. Синтаксис инициализации родительских классов:
    "class_name(parameters)".
    Если для члена или родительского класса не указан инициализатор, конструктор по умолчанию . используется
  17. ^ Любая процедура Eiffel может использоваться в качестве процедуры создания, она же конструктор. См. параграф Эйфеля в Конструкторе (информатика) .
  18. ^ Реализация {DISPOSABLE}.dispose гарантирует, что Dispose будет вызываться при сборке мусора.
  19. ^ Эта конструкция «инициализатора» используется редко. Поля в OCaml обычно инициализируются непосредственно в их объявлении. Только когда необходимы дополнительные императивные операции, используется «инициализатор». «Параметры конструктора» на других языках вместо этого указываются как параметры класса в OCaml. Дополнительные сведения см. в синтаксисе объявления класса.
  20. ^ Этот синтаксис обычно используется для перегрузки конструкторов.
  21. ^ В JavaScript конструктор — это объект.
  22. ^ Конструкторы можно эмулировать с помощью фабричного метода, возвращающего экземпляр класса.
  23. ^ Перейти обратно: а б с Идентификатор области должен появиться один раз в объявлении файла, все объявления переменных после этого идентификатора области имеют его область действия, пока не будет достигнут другой идентификатор области или конец объявления класса.
  24. ^ В ABAP определенные поля или методы не объявляются доступными для внешних объектов. Вместо этого внешние классы объявляются как друзья, чтобы иметь доступ к полям или методам класса.
  25. ^ В C++ определенные поля не объявляются доступными для внешних объектов. Скорее, внешние функции и классы объявляются как друзья, чтобы иметь доступ к полям класса. см . функцию друга и класс друга . Подробнее
  26. ^ Просто отправьте сообщение классу.
    класс   addInstVarName:   поле  . 
      класс   RemoveInstVarName:   поле  . 
    
  27. ^ Перейти обратно: а б с д Просто присвойте ему значение в методе
  28. ^ В Python нет частных полей — все поля всегда общедоступны. Существует соглашение сообщества, согласно которому детали реализации предваряются одним подчеркиванием, но это не поддерживается языком.
  29. ^ Все данные класса являются «частными», поскольку стандарт COBOL не определяет никакого способа доступа к ним.
  30. ^ Объявление и реализация методов в ABAP разделены. Оператор методов должен использоваться внутри определения класса. метод (без «s») должен использоваться внутри реализации класса. параметр = аргумент может повторяться, если параметров несколько.
  31. ^ В ABAP имя возвращаемого параметра явно определено в сигнатуре метода в определении класса.
  32. ^ В C++ объявление и реализация методов обычно разделены. Методы объявляются в определении класса (которое обычно включается в заголовочный файл ) с использованием синтаксиса
  33. ^ Хотя тело метода может быть включено в объявление внутри определения класса, как показано в таблице, это, как правило, плохая практика. Поскольку определение класса должно быть включено в каждый исходный файл, в котором используются поля или методы класса, наличие кода в определении класса приводит к компиляции кода метода с каждым исходным файлом, что увеличивает размер кода. Тем не менее, в некоторых случаях полезно включать в объявление тело метода. Одна из причин заключается в том, что компилятор попытается встроить методы, включенные в объявление класса; поэтому, если встречается очень короткий однострочный метод, компилятор может ускорить его встраивание, включив тело вместе с объявлением. Кроме того, если встречается шаблонный класс или метод, тогда весь код должен быть включен в объявление, поскольку только с помощью кода можно создать экземпляр шаблона.
  34. ^ Перейти обратно: а б Просто назначьте ему функцию в методе
  35. ^ Альтернативная реализация:
    def   bar  (): 
         doc   =   "Свойство bar." 
          def   fget  (  self  ): 
             вернуть   себя  .   _bar 
         def   fset  (  self  ,   value  ): 
             self  .   _bar   =   значение, 
         возвращаемое   locals  () 
     bar   =   свойство  (  **  bar  ())) 
    
  36. ^ для этих примеров требуется Class::Accessor. установленный модуль
  37. ^ Перейти обратно: а б с Хотя Eiffel не поддерживает перегрузку операторов, он может определять операторы
  38. ^ PHP не поддерживает перегрузку операторов изначально, но поддержку можно добавить с помощью пакета PECL «operator» .
  39. ^ Класс должен реализовывать интерфейс ArrayAccess .
  40. ^ Класс должен перегрузить '@{}' (разыменование массива) или создать подкласс одного из Tie::Array или Tie::StdArray для перехвата операций с массивом.
  41. ^ Перейти обратно: а б В ABAP аргументы должны передаваться с использованием следующего синтаксиса:
    x->method(«exporting parameter = argument» «importing parameter = argument» «changing parameter = argument» «returning value(parameter)»
    parameter = argument можно повторить, если имеется несколько параметров
  42. ^ В C++ нет ключевого слова «super», поскольку возможно множественное наследование, и поэтому может быть неоднозначно, на какой базовый класс ссылаются. Вместо этого BaseClassName::memberсинтаксис можно использовать для доступа к переопределенному члену в указанном базовом классе. Microsoft Visual C++ предоставляет для этой цели нестандартное ключевое слово «__super»; но это не поддерживается другими компиляторами. [1]
  43. ^ Перейти обратно: а б с д Это ж г час я Ключевое слово здесь не является значением и может использоваться только для доступа к методу суперкласса.
  44. ^ Но бойтесь, они не имеют одинаковой ценности.
  45. ^ только для необязательных типов
  46. ^ Перейти обратно: а б В этом языке методам экземпляра передается текущий объект в качестве первого параметра, который обычно называется «self», но это не обязательно.
  47. ^ «Предшественник» в Eiffel на самом деле является вызовом одноименного метода в суперклассе. Таким образом, Precursor(args) эквивалентен «super.currentMethodName(args)» в Java. В суперклассе невозможно вызвать метод с другим именем.
  48. ^ «супер» в Ruby, в отличие от других языков, на самом деле является вызовом одноименного метода в суперклассе. Таким образом, super(args) в Ruby эквивалентен «super.currentMethodName(args)» в Java. В суперклассе невозможно вызвать метод с другим именем.
  49. ^ В OCaml объявление объекта может начинаться с параметра, который будет связан с текущим объектом. Этот параметр обычно называется «self», но это не обязательно. Хорошей практикой является размещение там параметра, чтобы можно было вызывать собственные методы.
  50. ^ В OCaml объявление наследования («наследовать») может быть дополнительно связано со значением с помощью синтаксиса « наследовать родительский_класс «параметры» как супер». Здесь «супер» — это имя, присвоенное переменной, связанной с этим родительским объектом. Его можно назвать по-другому.
  51. ^ Однако, если необходима возможность иметь «необязательное» значение в OCaml, оберните это значение внутри option тип, какие значения None и Some x, который можно использовать для представления «нулевой ссылки» и «ненулевой ссылки на объект», как и в других языках.
  52. ^ при условии, что «x» и «y» являются объектами (а не указателями). Можно настроить, перегрузив объект == оператор
  53. ^ Доступно только внутри класса, поскольку clone() метод, унаследованный от Objectзащищен, если класс не переопределяет метод и не делает его общедоступным. Если использовать clone() унаследовано от Object, класс должен реализовать Cloneable интерфейс, позволяющий клонировать.
  54. ^ Класс должен реализовывать интерфейс Comparable чтобы этот метод был стандартизирован.
  55. ^ Реализовано объектом copyWithZone: метод
  56. ^ compare:— общепринятое название метода сравнения в базовых классах. Однако формального протокола не существует.
  57. ^ Только если объект соответствует Printable протокол
  58. ^ Только если объект соответствует DebugPrintable протокол
  59. ^ Только если объект соответствует Equatable протокол
  60. ^ Только если объект соответствует Comparable протокол
  61. ^ Только если объект соответствует hashValue протокол
  62. ^ Может быть настроена объектом __str__() метод
  63. ^ Может быть настроена объектом __repr__() метод
  64. ^ Может быть настроена объектом __copy__() метод
  65. ^ Может быть настроена объектом __eq__() метод
  66. ^ Только в Python 2.x и более ранних версиях (удалено в Python 3.0). Может быть настроен объектом __cmp__() метод
  67. ^ Может быть настроена объектом __hash__()метод. Не все типы хешируются (изменяемые типы обычно не хэшируются)
  68. ^ Может быть настроена объектом __clone() метод
  69. ^ Перейти обратно: а б Можно настроить, перегрузив оператор преобразования строк объекта.
  70. ^ Этот пример требует использования Data ::Dumper.
  71. ^ Для этого примера требуется использование Storable .
  72. ^ В этом примере требуется использование Scalar ::Util.
  73. ^ Информацию о типах времени выполнения в ABAP можно собрать с помощью различных классов описания, таких как CL_ABAP_CLASSDESCR.
  74. ^ Перейти обратно: а б с д Это В этом языке преобразование неявно. Экземпляр подтипа можно использовать там, где необходим супертип.
  75. ^ Только для объектов, не принадлежащих к классу. Если x это объект класса, [x class] возвращает только x. Метод времени выполнения object_getClass(x) вернет класс x для всех объектов.
  76. ^ Перейти обратно: а б с Этот язык является динамически типизированным. Приведение типов между типами не требуется.
  77. ^ Этот язык не предоставляет информацию о типах во время выполнения. В этом нет необходимости, поскольку оно статически типизировано и понижающее приведение невозможно.
Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: C92EC98CC86B710FC4736D99F3360783__1695718920
URL1:https://en.wikipedia.org/wiki/Comparison_of_programming_languages_(object-oriented_programming)
Заголовок, (Title) документа по адресу, URL1:
Comparison of programming languages (object-oriented programming) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)