У чому різниця між класом та методом




У чому різниця між класом та методом



У чому різниця між методами класу та екземпляра?

У чому різниця між методом класу та методом екземпляра?

Чи є методи екземпляра засобами доступу (гетерами та сеттерами), тоді як методи класу є майже всім іншим?

Відповіді:

Як говорилося у більшості інших відповідей, методи екземпляра використовують екземпляр класу, тоді як метод класу може використовуватися лише з ім'ям класу. У Objective-C вони визначені так:

@interface
MyClass
:
NSObject
+
(void)aClassMethod;
-
(void)anInstanceMethod;
@end

Потім вони можуть бути використані так:

[MyClass
aClassMethod];
MyClass
*object
=
[[MyClass
alloc]
init];
[object anInstanceMethod];

Деякими реальними прикладами методів класу є зручні методи для багатьох базових класів, таких як NSString +stringWithFormat: або NSArray +arrayWithArray: . Метод екземпляра буде NSArray «S-count метод.

Хороша відповідь. Варто також зазначити, що ви побачите конкретний скорочений запис для опису методів. Наприклад, + [NSString stringWithFormat:] є методом класу + stringWithFormat: on NSString; - [NSArray objectAtIndex:] є методом екземпляра. Методи з кількома частинами селектора пишуться як - [NSMutableDictionary setObject: forKey:] і т. д. Ви часто будете бачити цю примітку у відповідях Какао, документації та в Xcode.

Я додав би, що метод класу називається «статичним» методом у багатьох інших мовах. І щоб відповісти на первісне питання, методи доступу є методами екземпляра, оскільки вони встановлюють та одержують стан певного екземпляра. У наведеному вище прикладі NSArray count повертає кількість об'єктів у конкретному примірнику.

«як метод класу може використовуватися лише з ім'ям класу». або об'єкт класу

Вибачте за хвилювання. але я щойно дізнався різницю та її потенціал. методи класу рок та класи синглтона! Уффф, я закохався!

Статичні методи @BrianPan та методи класів не збігаються. Вони схожі, але причина, через яку вони називаються по-різному, полягає в тому, що вони працюють по-різному. Наприклад, статичні методи неможливо знайти перевизначені.

Усі технічні деталі були добре описані інших відповідях. Я просто хочу поділитися простою аналогією, яка, на мій погляд, чудово ілюструє різницю між класом та екземпляром:

Клас схожий план вдома: У вас є тільки один план і (зазвичай) ви не можете зробити це багато з одним тільки планом.

Примірник (або об'єкт ) є фактичним будинком , який ви будуєте на основі плану: Ви можете побудувати багато будинків з того ж плану. Потім ви можете пофарбувати стіни в різні кольори в кожному будинку, так само, як ви можете незалежно змінювати властивості кожного екземпляра класу, не торкаючись інших екземплярів.

@JohannesFahrenkrug Добре пояснив концепцію класу та об'єкту тут. Це не фактичне питання для difference між class method and an instance method ;

Прекрасне пояснення класу проти екземпляра класу. Класи є дивним поняттям для новачків, і це пояснює це фундаментальним чином.

@JohannesFahrenkrug дійсно хороше пояснення, яке змусило мене задуматися про те, як використовувати обидва

Як і в інших відповідях, методи екземпляра працюють з об'єктом і мають доступ до його змінних екземпляра, у той час як метод класу працює з класом загалом і не має доступу до змінних конкретного екземпляра (якщо ви не передаєте екземпляр як параметр).

Хорошим прикладом методу класу є метод лічильного типу, який повертає загальну кількість екземплярів класу. Методи класу починаються з a + , а екземпляри класу починаються з - . Наприклад:

static
int
numberOfPeople
=
0;
@interface
MNPerson
:
NSObject

int
age;
//instance variable
>
+
(int)population;
//class method. Returns how many people have been made.
-
(id)init;
// instance. Конструктивні об'єкти, збільшення числаодних людей за одним.
-
(int)age;
// instance. returns the person age
@end
@implementation
MNPerson
-
(id)init
if
(self
=
[super init]) numberOfPeople++;
age
=
0;
>
return
self;
>
+
(int)population
return
numberOfPeople;
>
-
(int)age
return
age;
>
@end
MNPerson
*micmoo
=
[[MNPerson
alloc]
init];
MNPerson
*jon
=
[[MNPerson
alloc]
init];
NSLog(@"Age: %d",[micmoo age]);
NSLog(@"%Number Of people: %d",[MNPerson
population]);

Вихід: Вік: 0 Кількість осіб: 2

Інший приклад - якщо ви маєте метод, який ви хочете, щоб користувач міг викликати, іноді корисно зробити його методом класу. Наприклад, якщо у вас є клас з ім'ям MathFunctions, ви можете зробити це:

+
(int)square:(int)num
return
num
*
num;
>

Тоді користувач дзвонитиме:

[MathFunctions
square:34];

без необхідності створювати екземпляр класу!

Ви також можете використовувати функції класу для повернення автоматично випущених об'єктів, таких як NSArray

+
(NSArray
*)arrayWithObject:(id)object

Це бере об'єкт, поміщає його в масив і повертає автоматично випущену версію масиву, яка не повинна керуватися пам'яттю, відмінно підходить для тимчасових масивів, а що ні.

Я сподіваюся, що тепер ви розумієте, коли та / або чому ви повинні використовувати методи класу !!

micmoo, я можу запропонувати вам поставити "static int numberOfPeople = 0;" у коді відформатований текст? Я був збентежений, поки не помітив це над прикладом коду. Крім цього, дуже коротка відповідь.

Вибачте за плутанину з новачком, але навіщо вам потрібна змінна екземпляра "age" та метод екземпляра "age"? Чи не вийде за допомогою @synthetize отримати та отримати змінну "age" для екземпляра?

Метод екземпляра застосовується до екземпляра класу (тобто об'єкта), тоді як метод класу застосовується до самого класу.

У C# метод класу позначений як статичний. Методи та властивості, не позначені як статичні, є методами екземпляра.

class
Foo

public
static
void
ClassMethod()

.
>
public
void
InstanceMethod()

.
>
>

Вибачте, я тільки-но помітив, що це було питання Obj-C. Сподіваюся, мою відповідь, як і раніше, застосовується, але, будь ласка, проголосуйте проти або проголосуйте за видалення.

Без шкоди. Перша частина вашої відповіді вірна як загальний принцип ОВП і, безумовно, відноситься до Objective-C. Ви можете додати "target-c" до свого списку тегів, щоб ігнорувати, якщо ви не хочете бачити такі питання, хоча будь-яка участь, безумовно, вітається. :-)

Відповідь на ваше запитання не є специфічною для target-c, однак у різних мовах методи класу можуть називатися статичними методами.

Різниця між методами класу та методами екземпляра

  • Робота зі змінними класу (вони не можуть отримати доступ до змінних екземплярів)
  • Не вимагає, щоб об'єкт був створений для застосування
  • Іноді може бути запах коду (деякі люди, які погано знайомі з ОВП використовують як опору для виконання структурованого програмування в середовищі ГО)
  • Робота зі змінними екземплярів та змінними класу
  • Повинен мати інстанційований об'єкт для роботи

Я думаю, що найкращий спосіб зрозуміти це, щоб дивитися на alloc та init. Саме це пояснення дозволило мені зрозуміти різницю.

Метод класу

Метод класу застосовується до класу загалом. Якщо ви перевірите метод alloc, це метод класу, позначений + перед оголошенням методу. Це метод класу, тому що він застосовується до класу для створення конкретного екземпляра цього класу.

Метод екземпляра

Ви використовуєте метод екземпляра для зміни конкретного екземпляра класу, який є унікальним для цього екземпляра, а не для класу загалом. init наприклад (позначається перед оголошенням методу), є методом екземпляра, тому що ви зазвичай змінюєте властивості цього класу після того, як він був створений за допомогою alloc .

приклад

NSString
*myString
=
[NSString
alloc];

Ви викликаєте метод класу alloc для створення екземпляра цього класу. Зауважте, що одержувач повідомлення є класом.

[myString initWithFormat:@"Hope this answer helps someone"];

Ви змінюєте NS екземпляр викликаного myString , встановлюючи деякі властивості для цього екземпляра. Зауважте, що одержувач повідомлення є екземпляром (об'єктом класу NSString ).

Що ви маєте на увазі під перевіркою методу "alloc"? Чи можете ви вказати мені конкретне місце у документації? (edit) -> ааа, неважливо, так, у документах NSObject говориться, що в розділі «Завдання» - developer.apple.com/library/ios/documentation/cocoa/reference/…

Вам не потрібно розуміти, що він робить, щоб зрозуміти це, просто те, що він застосовується до класу. Простіше кажучи: alloc виділяє достатньо пам'яті об'єкту, init змінить те, що у цих адресах пам'яті, щоб визначити стан об'єкта. Ми не можемо змінити об'єкт, якщо немає місця для його зміни, тому ми використовуємо alloc клас, який визначить, чи надамо нам цей простір.

Методи класу зазвичай використовуються для створення екземплярів цього класу

Наприклад, [NSString stringWithFormat:@"SomeParameter"]; повертає NSString екземпляр із параметром, який йому відправлено. Отже, оскільки це метод класу, який повертає об'єкт свого типу, його називають допоміжним методом.

Тож якщо я правильно розумію.

class Метод не вимагає , щоб виділити екземпляр цього об'єкта для використання / обробити його. class Метод є автономним і може працювати без будь-якої залежності від стану будь-якого об'єкта цього класу. Очікується, що class метод виділить пам'ять для всієї своєї роботи та звільнить її після завершення, оскільки жоден екземпляр цього класу не зможе звільнити пам'ять, виділену в попередніх викликах методу класу.

instance Метод якраз навпаки. Ви не можете викликати його, якщо не виділите екземпляр цього класу. Це як звичайний клас, який має конструктор і може мати деструктор (який очищає усю виділену пам'ять).

Ймовірно (якщо ви пишете бібліотеку багаторазового використання, вам не потрібна змінна class).

Очевидним випадком, коли вам потрібні методи класу є створення екземплярів. Ви повинні мати можливість створювати екземпляри без будь-яких екземплярів, інакше перший екземпляр ніколи не буде створено. Ось чому + alloc є і має бути методом класу.

Методи екземплярів працюють із екземплярами класів (тобто. «об'єктами»). Методи класу пов'язані з класами (більшість мов використовують ключове слово static цих хлопців).

Візьмемо, наприклад, гру, в якій з'являється безліч автомобілів. Кожен із них належить до класу CCar. Коли автомобіль створюється, він дзвонить

[CCar
registerCar:self]

Таким чином, клас CCar може скласти список кожного екземпляра CCar. Допустимо, користувач закінчує рівень і хоче видалити всі машини. ви можете: 1- переглянути список всіх створених вами CCar вручну, whicheverCar.remove(); або виконати або 2 - додати метод removeAllCars в CCar, що зробить це. для вас, коли ви телефонуєте [CCar removeAllCars]. Тобто. allCars[n].remove();

Або, наприклад, ви дозволяєте користувачеві вказати розмір шрифту за замовчуванням для всієї програми, яка завантажується та зберігається під час запуску. Без методу класу вам, можливо, доведеться зробити щось на зразок

fontSize
=
thisMenu.getParent().fontHandler.getDefaultFontSize();

За допомогою методу класу ви могли б зійти з рук [FontHandler getDefaultFontSize] .

Що стосується вашої функції removeVowels, ви виявите, що мови, подібні до C #, насправді мають обидва методи з певними методами, такими як toLower або toUpper.

наприклад, myString.removeVowels() і String.removeVowels(myString) (в ObjC це буде [String removeVowels:myString] ).

І тут екземпляр, швидше за все, викликає метод класу, тому обидва доступні. тобто.

public
function toLower():String
return
String.toLower();
>
public
static
function toLower(
String
inString):String
//do stuff to string.
return
newString;
>

в принципі, myString.toLower() дзвінки [String toLower:ownValue]

Немає однозначної відповіді, але якщо ви відчуваєте, що використання методу класу покращить ваш код, спробуйте і пам'ятайте, що метод класу дозволить вам використовувати лише інші методи/змінні класи.

методи класу

є методами, оголошеними як статичні. Метод може бути викликаний без створення екземпляра класу. Методи класу можуть працювати лише з членами класу, а не з членами екземпляра, оскільки методи класу не знають членів екземпляра. Методи екземпляра класу також не можна викликати з методу класу, якщо вони не викликаються для екземпляра цього класу.

Методи екземпляра

з іншого боку, потрібно, щоб екземпляр класу існував до їхнього виклику, тому необхідно створити екземпляр класу за допомогою ключового слова new. Методи екземпляра працюють із конкретними екземплярами класів. Методи екземпляра не оголошуються як статичні.

Він також може бути створений за допомогою ключового слова "alloc", а не тільки "new". Крім того, Objective-C не вимагає існування екземпляра для виклику методу екземпляра, ви можете надсилати повідомлення з нульовим покажчиком.

У Objective-C всі методи починаються із символу "-" або "+". Приклад:

@interface
MyClass
:
NSObject
// instance method
-
(void)
instanceMethod;
+
(void)
classMethod;
@end

Символи "+" і "-" вказують, чи є метод a class method або a instance method відповідно.

Різниця буде зрозумілою, якщо ми викличемо ці методи. Тут методи оголошені в MyClass.

instance method Вимагати екземпляр класу:

MyClass*
myClass
=
[[MyClass
alloc]
init];
[myClass instanceMethod];

У MyClass інших методів можна викликати методи екземпляра MyClass using self :

-(void)
someMethod

[self instanceMethod];
>

Але, class methods має бути викликаний сам клас:

MyClass*
myClass
=
[[MyClass
alloc]
init];
[myClass
class]
classMethod];
// Error
[myClass classMethod];
// Error
[self classMethod];

МЕТОДИ КЛАСУ

Метод класу зазвичай створює новий екземпляр класу, або отримує деякі глобальні властивості класу. Методи класу не працюють з екземпляром або не мають доступу до змінної екземпляра.

МЕТОДИ ІНСТАНЦІЇ

Метод екземпляра працює з конкретним екземпляром класу. Наприклад, реалізований вами метод доступу – це всі методи екземпляра. Ви використовуєте їх для встановлення або отримання змінних примірників певного об'єкта.

ВИКЛИК

Щоб викликати метод екземпляра, ви надсилаєте повідомлення екземпляру класу.

Щоб викликати метод класу, ви надсилаєте повідомлення класу безпосередньо.

Методи класу не можуть змінити або дізнатися значення будь-якої змінної екземпляра. Це має бути критерієм для того, щоб знати, чи метод екземпляра може бути методом класу.

-1 від мене, тому що ви можете передати екземпляр у метод класу, і він зможе змінювати та знати значення своїх змінних.

Також пам'ятайте, що та сама ідея відноситься і до змінних. Ви зустрінете такі терміни, як static, member, instance, class тощо.Д., коли говорите про змінні так само, як і для методів/функцій.

Здається, що загальний термін у спільноті Obj-C – це ivar, наприклад, змінна, але я поки що не хлопець із Obj-C.

Оновлення вищезгаданих відповідей, я згоден, методи екземпляра використовують екземпляр класу, тоді як метод класу можна використовувати лише з ім'ям класу.

Більше немає різниці між методом екземпляра та методом класу після того, як у Objective-C з'явився автоматичний підрахунок посилань.

Наприклад, [NS StringWithformat. ] Метод класу і метод [[NSString alloc] initwihtformat. ] екземпляра, обидва однакові після ARC

Примітка: це тільки у форматі псевдокоду

Метод класу

Майже все, що потрібно зробити, це під час компіляції . Він не потребує ні якого введення користувача, ні його обчислення засноване на екземплярі. Все у ньому засноване на класі/кресленні, який унікальний, тобто. у вас немає кількох креслень для одного класу. Чи можуть бути різні варіації під час компіляції? Ні, тому клас є унікальним, і тому, незалежно від того, скільки разів ви викликаєте метод класу, покажчик на нього буде однаковим.

PlanetOfLiving:
return
@"Earth"
// No matter how багато разів ви робите цей метод. nothing changes.

Метод екземпляра

Навпаки, метод екземпляра відбувається під час виконання, оскільки тільки тоді ви створили екземпляр чогось, що може змінюватись при кожному створенні.

initWithName:
@"John"
lastName:
@"Doe"Age:12
@"cool"
initWithName:
@"Donald"
lastName:
@"Drumpf"Age:5
attitude:@"He started"
initWithName:
@"President"
lastName:
@"Obama"Age:54
attitude:
@"Awesome"
//As you can see the value can change for each instance.

Якщо ви прийшли з інших мов, статичні методи такі ж, як і методи класу.
Якщо ви прийшли з Swift, методи типу такі самі, як методи класу.

Додавання до відповідей вище

Метод класу буде працювати з класом, ми будемо використовувати його для загального призначення, наприклад: + stringWithFormat, розмір класу і, що найважливіше, для init і т.д.

NSString
*str
=
[NSString
stringWithFormat:@"%.02f%%",someFloat];

Метод екземпляра буде працювати з екземпляром класу, а не з класом, якби у нас було дві людини, і ми хочемо дізнатися про баланс кожного окремо, тут нам потрібно використовувати метод екземпляра. Тому що це не поверне спільну відповідь. наприклад, як визначити кількість NSSArray і т.д.

[johnson getAccountBalance];
[ankit getAccountBalance];

Функція проти методу: різниця та порівняння

В епоху технологій та комп'ютерів важливу роль відіграє мова програмування. Мова програмування – це спосіб, за допомогою якого ми можемо спілкуватися з програмним забезпеченням на комп'ютері. Комп'ютер розуміє лише мову машинного рівня. Основою мови програмування є функції та методи.

Основні висновки

  1. Функція – це блок коду, який виконує певне завдання, тоді як метод – це функція, пов'язана з об'єктом чи класом.
  2. Функції повертають значення за промовчанням, тоді як метод може повертати значення чи ні, залежно від реалізації.
  3. Функції не пов'язані з конкретним об'єктом чи класом, тоді як методи завжди пов'язані з об'єктом чи класом.

Функція проти методу

Різниця між функцією та методом полягає в тому, що функція вільна від будь-якого об'єкта, тоді як сам метод є статичним або знаходиться на об'єкті. У мові C немає методів, у ньому є лише функції, тоді як у C++ та JAVA немає функцій, а є лише методи.Об'єктно-орієнтоване слово для методу – функція.

Функція – це фрагмент коду з ім'ям, який може передавати та, при необхідності, повертати дані для роботи. Іншими словами, робота функції будь-якою мовою програмування полягає у наданні результату в обмін на задані дані (параметри). Функцію можна використовувати кілька разів. Функція також може бути викликана будь-якою іншою функцією.

Хоча цей метод відомий як ООП (об'єктно-орієнтована мова програмування), тому що об'єкт включає дані і поведінку, а це включає в себе інтерфейс. У такий спосіб можна визначити, чи можна використовувати об'єкт чи ні. Наприклад, "вікно" - це об'єкт, що складається з методів "відкрити" і "закрити", що мають деякі дані та поведінку.

Порівняльна таблиця

Параметри порівнянняФункціяСпосіб доставки
Основа данихПрацює лише з наданими даними.Він може отримати доступ до всіх даних, пов'язаних із класом.
Конфіденційність данихФункція не може працювати або отримувати доступ до особистих даних, якщо такі є.Метод може працювати з приватними даними класу, якщо такі є.
ТипФункції можуть описувати власний код.Методи є об'єктно-орієнтованою мовою програмування.
МовМова C має функції та не має методів.У мовах JAVA та C++ є методи, але немає функцій.
КласОголошення класу не потрібне.Методи закодовані усередині класу.

Що таке функція?

Функції є групою інструкцій, об'єднаних разом задля досягнення певного результату. Функція може підвищити можливість повторного використання певного коду. Будь-які значення можуть бути передані через змінні у функцію.Змінні поділяються на дві категорії - аргументи та параметри.

Подібні читання

У JAVA ми починаємо програмування з класу, за яким слідує наступний рядок із зазначенням «public static void main()». «public» означає специфікатор доступу та використовується для керування тим, яка частина вмісту має бути доступна.

Існують певні правила, яким необхідно дотримуватися щодо функції в таких мовах програмування, як JAVA і C++. Наприклад, в JAVA правила визначення функції полягають у тому, що не можна оголошувати кілька функцій, що мають ту саму сигнатуру, тобто функції, що мають однакові параметри та номери, не можуть повторюватися. Приклад функції JAVA наведено нижче для довідки: Int findMinimum (int num1, int num2, int num3) < If (num1 >num2) return num1; < elseif (число3 > число1) повернути число3; інакше повернути число1; > > У мові програмування C функції бувають двох типів: зумовлені і зумовлені користувачем функції.

Такі функції, як puts(), get(), printf(), scanf() тощо, є визначеними бібліотечними функціями. Наприклад, функція printf() описана в тому для використання функції printf() необхідно заголовковий файл необхідно включити до програми за допомогою #include .

Функції, створені користувачем у програмі, називаються функціями користувача. Синтаксис визначуваної користувачем функції: return_type ім'я_функції (список аргументів) . Тип значення, що повертається може бути таким, як char, int, void і т. д. Список аргументів призначений для порівняння двох даних типу, що повертається. Блок коду — це група операторів програмування мовою C, які будуть виконуватися щоразу, коли під час виконання виконується виклик функції.

Що таке метод?

Методи визначено як об'єктно-орієнтовані мови програмування. Методи також поділяються на три типи: метод інтерфейсу, метод конструктора та метод реалізації.

У програмуванні метод записується як; String getMyName() < return «Давина Клер»; >У наведеному вище прикладі методу getMyName() є сигнатурою методу. < повернути «Давина Клер»; >- Тіло методу. Рядок є типом, що повертається і повертає «Davina Claire»; є оператором повернення.

Повна програма буде наступною: колір; // Чорна луна “ ”; echo $swiftDzire -> колір; // чорний echo ""; // Задаємо значення $alto -> color = 'red'; $alto -> comp = "ALTO"; $ swiftDzire -> comp = "SWIFTDZIRE"; // Знову одержуємо значення echo $alto -> color; // червоний echo ""; echo $swiftDzire -> колір; // чорний echo “»; луна $ альт -> комп; // Відлуння АЛЬТО " "; echo $swiftDzire -> comp; // SWIFTDZIRE echo " "; // Використовуйте методи отримання звукового сигналу echo $alto -> hello(); // звуковий сигнал echo ""; echo $swiftDzire -> hello(); // звуковий сигнал

Основна відмінність між функцією та методом

  1. Функція викликається безпосередньо з її імені, тоді як метод включає код, який викликається по імені об'єкта.
  2. Функція може передавати, а потім повертати дані, що обробляються, в той час як метод обробляє дані в класі.
  3. Функція є незалежною, а метод — це функція, пов'язана з об'єктом.
  4. Явні дані передаються функції, тоді як метод повністю передає об'єкт, котрій він був викликаний у програмі.
  5. Метод – це об'єктно-орієнтоване програмування, а функція має автономну функціональність.

Я доклав стільки зусиль, щоб написати цю посаду в блозі, щоб надати вам цінність.Це буде дуже корисно для мене, якщо ви подумаєте, щоб поділитися ним у соціальних мережах або зі своїми друзями/рідними. ДІЛИТИСЯ ♥️

Подібні читання

Чим відрізняється "метод" від "функції"

Неодноразово бачив використання терміна "метод" для позначення функцій-членів класів на противагу терміну "функція" для позначення "вільних" функцій нечленів. З іншого боку, у текстах про Сі++ часто все називають "функцією" і члени і нечлени. Власне, яка різниця між термінами "метод" та "функція", чому в Сі++ члени не називають "методами"?

чому в Сі ++ члени не називають "методами"? - так і хочеться пожартувати про тому, що вони ч. але не буду

@ОлексійШиманський я не впевнений, що так у всіх мовах, і вважаю за краще утриматися від відповіді. Епічна відповідь з прикладами та винятками (якщо такі існують) від когось впевненого буде кориснішою)

6 відповідей 6

І чого так багато слів? Все просто:

Метод завжди є функцією, а функція який завжди є методом.

Немає єдиної усталеної техніки найменування сутностей у мовах програмування і кожна мова, щоб трохи відрізнятися від інших, з історичних причин має свій набір назв та угод.

Так як програмування прийшло з математики, то початкове коріння потрібно шукати там. А там були функції та процедури. Функція виходячи з своїх аргументів генерує якийсь результат. sin, cos - яскраві приклади. Функція без аргументів - вироджений варіант і це константа. В математиці зазвичай функції є чистими - тобто вони не мають побічних ефектів. Тобто, виклик функції з одними й тими самими аргументами дає той самий результат.

Паралельно існують процедури.Процедура - це послідовність дій, що призводить до певного результату (так, звичайна програма - це також може бути процедура, хоча.). У паскалі та фортані прийнято, що процедура не повертає результату. Але я вважаю, що це виключно угода, бо інакше треба було б робити як у C/C++ та вводити порожній тип (void).

чому в Сі ++ члени не називають "методами"?

У багатьох мовах 60-70 років не було ОВП у тому розумінні, яке відоме зараз. С++ спочатку був просто "фронтом" (тобто надбудовою) над звичайним Сі. Був довгий період, коли це вже був не Сі, а ще й не C++. компілятора C++ не було, а був транслятор у Сі. Мабуть тому там закріпилася функція класу/змінна класу. Зараз Страуструп пропонує N4174, і якщо його приймуть, то межа між звичайними функціями та функціями класу розмиється ще більше.

В інших мовах - Java та сімейство, проектувалися, коли вже ОВП був трохи сформованим. Від звичайних функцій вони вирішили відмовитись і, мабуть, щоб не викликати плутанину, обізвали все методами. Так, потім їм довелося функції все-таки повернути назад, але щоб нічого не зламати, назвали це статичними методами.

Власне, яка різниця між термінами "метод" та "функція"

Правильна відповідь – історична. Як правильно називати сутності у різних мовах, потрібно уточнювати у їхній документації.

багато авторів книг з с++ називають функції класу методами. Як бути?

Тут усе складно. Наприклад, Еккель так робить мабуть тому, що він ще й багато книг про Java написав. Також не варто забувати, що багато книг ми читаємо в перекладі, а вони "виправляють", тому що перекладачеві так зрозуміліше.

так чи можна називати функції класу з ++ методами?

Це так само, як використовувати мат/обсценную лексику у вищому суспільстві. Або намагатися порозумітися з гопниками мовою Тургенєва та віршами Пушкіна/Блока.

P.S. метод - слово багатозначне і цілком можна почути від C++ програмістів такий "це метод для отримання даних з сервера, реалізований у вигляді 5 функцій і двох класів".

Схожі статті

  • У чому різниця між Свідками Єгови та християнами
  • У чому різниця між шипом і Пейрінгом
  • У чому різниця між водолазкою та водолазкою
  • У чому різниця між POM та черлідингом
  • У чому різниця між Ізоспан А та АМ
  • У чому різниця між водохресною та Богоявленською водою
  • У чому різниця між Сонею та Софією
  • У чому різниця між звичайним та сирним Лавашем
  • Недавні статті

  • Як бродить зернова брага
  • Що робити якщо не засмагаєш на сонці чому засмага погано лягає на шкіру або перестає прилипати
  • Як швидко зняти гель лак без апарату
  • Як робиться Каті голови
  • Яка гребінець краще для об'єму
  • Чим роблять м'яку покрівлю
  • Чи можна залишати крем для обличчя на ніч
  • Де знаходиться датчик селектора
  • географія нашої діяльності
    вулиця Драгоманова, 27
    вул. Курчатова 1Б
    вул. Міцкевича 130
    вул. Лабунського, 1
    вул. Макарова-Пржевальського
    вул. Толстого 10
    вул. Грушевського 28
    вул. Перший промінь (Черняхівського)
    напишіть нам

    сообщение успешно отправлено
    x