Domanda

Qualcuno può fornire una spiegazione semplice di metodi vs funzioni in OOP contesto?

È stato utile?

Soluzione

Una funzione è una parte di codice chiamata per nome. Può essere passato i dati su cui operare (cioè i parametri) e può facoltativamente restituire dati (il valore di ritorno). Tutti i dati passati a una funzione vengono esplicitamente passati.

Un metodo è un pezzo di codice che viene chiamato da un nome associato a un oggetto. Per molti aspetti è identico a una funzione, tranne per due differenze chiave:

  1. Un metodo viene implicitamente passato l'oggetto su cui è stato chiamato.
  2. Un metodo è in grado di operare su dati contenuti nella classe (ricordando che un oggetto è un'istanza di una classe - la classe è la definizione, l'oggetto è un'istanza di quei dati).

(questa è una spiegazione semplificata, ignorando i problemi di scope ecc.)

Altri suggerimenti

Un metodo è su un oggetto.
Una funzione è indipendente da un oggetto.

Per Java, ci sono solo metodi.
Per C, ci sono solo funzioni.

Per C ++ dipenderà dal fatto che tu sia o meno in una classe.

'metodo' è la parola orientata agli oggetti per 'funzione' . Questo è praticamente tutto ciò che c'è da fare (cioè, nessuna vera differenza).

Sfortunatamente, penso che molte delle risposte qui stiano perpetuando o facendo avanzare l'idea che ci sia una differenza complessa e significativa.

Davvero - non c'è molto da dire, solo parole diverse per la stessa cosa.

[aggiunta in ritardo]


In effetti, come Brian Neal ha sottolineato in un commento a questa domanda , il C ++ lo standard non usa mai il termine "metodo" quando si fa riferimento alle funzioni membro. Alcune persone potrebbero prenderlo come un'indicazione che il C ++ non è in realtà un linguaggio orientato agli oggetti; tuttavia, preferisco prenderlo come un'indicazione che un gruppo piuttosto intelligente di persone non pensava che ci fosse una ragione particolarmente forte per usare un termine diverso.

In generale:i metodi sono funzioni che appartengono a una classe, le funzioni possono essere in qualsiasi altro ambito di applicazione del codice, così si potrebbe affermare che tutti i metodi sono funzioni, ma non tutte le funzioni sono metodi:

Prendere il python seguente esempio:

class Door:
  def open(self):
    print 'hello stranger'

def knock_door:
  a_door = Door()
  Door.open(a_door)

knock_door()

L'esempio mostra una classe chiamata "la Porta" che ha un metodo o l'azione che chiamato "open", si chiama un metodo perché è stata dichiarata all'interno di una classe.C'è un'altra porzione di codice con "def" appena al di sotto del quale si definisce una funzione, è un dato che non viene dichiarata all'interno di una classe, questa funzione chiama il metodo che abbiamo definito all'interno della nostra classe, come si può vedere e, infine, la funzione viene chiamata da sé.

Come si può vedere è possibile chiamare una funzione ovunque, ma se si desidera chiamare un metodo devi passare a un nuovo oggetto dello stesso tipo e della classe il metodo è dichiarato (di Classe.metodo(oggetto)) o è necessario richiamare il metodo all'interno dell'oggetto (oggetto.Metodo()), almeno in python.

Pensare a metodi come le cose solo un'entità può fare, quindi, se avete un Cane di classe avrebbe senso avere una corteccia funzione solo all'interno di quella classe, e che sarebbe un metodo, se anche una Persona di classe poteva avere un senso per scrivere una funzione "feed" che non appartengono a nessuna classe, dato che entrambi gli esseri umani e cani possono essere alimentati e che si potrebbe chiamare una funzione in quanto non appartengono a nessuna classe in particolare.

Una definizione molto generale della differenza principale tra una funzione e un metodo :

  

Le funzioni sono definite al di fuori delle classi, mentre i metodi sono definiti all'interno e parte delle classi.

Modo semplice da ricordare:

  • F unzione & # 8594; F ree (libero significa non appartenere a un oggetto o a una classe)
  • M ethod & # 8594; M ember (un membro di un oggetto o di una classe)

Se avete voglia di leggere, qui, è "la Mia introduzione ai metodi OO"

L'idea dietro il paradigma ad Oggetti è quello di "minaccia" il software è composto da ..bene "oggetti".Gli oggetti nel mondo reale sono proprietà, per esempio, se si dispone di un Dipendente, il dipendente ha un nome, un id dipendente, una posizione, che appartiene al dipartimento etc.ecc.

L'oggetto anche sapere come trattare con i suoi attributi e di eseguire alcune operazioni su di essi.Diciamo, se vogliamo sapere che cosa è un dipendente che fa la destra ora vorremmo chiedere a lui.

employe whatAreYouDoing.

Che "whatAreYouDoing" è un "messaggio" inviato all'oggetto.L'oggetto sa come rispondere alle domande, si è detto che è un "metodo" per risolvere la questione.

Così, il modo in cui gli oggetti hanno per esporre il suo comportamento sono detti metodi.Metodi quindi sono il manufatto oggetto di "fare" qualcosa.

Altri metodi possibili sono

employee whatIsYourName
employee whatIsYourDepartmentsName

ecc.

Funzioni in altra parte sono modi un linguaggio di programmazione per calcolare alcuni dati, per esempio, si potrebbe avere la funzione di addValues( 8 , 8 ) che restituisce 16

// pseudo-code
function addValues( int x, int y )  return x + y 
// call it 
result = addValues( 8,8 )
print result // output is 16...

Dal primo momento in cui i principali linguaggi di programmazione ( come il fortran, c, pascal ) non coprire il paradigma OO, solo chiamata a questi " artefatti "funzioni".

per esempio precedente la funzione in C sarebbe:

int addValues( int x, int y ) 
{
   return x + y;
}

Non è "naturale" per dire un oggetto è una "funzione" per eseguire una certa azione, poiché le funzioni sono più legati alla matematica roba mentre un Dipendente ha poco matematiche su di esso, ma si può avere metodi che fanno esattamente le stesse funzioni, per esempio in Java sarebbe l'equivalente addValues funzione.

public static int addValues( int x, int y ) {
    return x + y;
}

Sembra familiare?Thats perché Java avere le sue radici in C++ e C++ su C.

Alla fine è solo un concetto, in attuazione potrebbero sembrare la stessa, ma le OO documentazione il presente metodo chiamato.

Heres un esempio di precedenza il Dipendente oggetto in Java.

public class Employee {

    Department department;
    String name;

    public String whatsYourName(){
        return this.name;
    }
    public String whatsYourDeparmentsName(){
         return this.department.name();
    }
    public String whatAreYouDoing(){
        return "nothing";
    } 
    // Ignore the following, only set here for completness
    public Employee( String name ) {
        this.name = name;
    }

}

// Usage sample.
Employee employee = new Employee( "John" ); // Creates an employee called John

// If I want to display what is this employee doing I could use its methods.
// to know it.
String name = employee.whatIsYourName():
String doingWhat = employee.whatAreYouDoint();

// Print the info to the console.

 System.out.printf("Employee %s is doing: %s", name, doingWhat );

Output:
Employee John is doing nothing.

La differenza, quindi, è il "dominio", in cui viene applicato.

AppleScript avere l'idea di "linguaggio naturale" matphor , che a un certo punto OO avuto.Per esempio le Chiacchiere.Spero che non può essere ragionevole, più facile per voi capire metodi di oggetti dopo la lettura di questo.

NOTA:Il codice non deve essere compilato, solo per servire come un esempio.Sentitevi liberi di modificare il post e aggiungere Python esempio.

Nel mondo OO, i due sono comunemente usati per significare la stessa cosa.

Da una prospettiva matematica e CS pura, una funzione restituirà sempre lo stesso risultato quando viene chiamata con gli stessi argomenti (f (x, y) = (x + y)). Un metodo, d'altra parte, è in genere associato a un'istanza di una classe. Ancora una volta, tuttavia, la maggior parte delle lingue OO moderne non usa più il termine & Quot; function & Quot; per la maggior parte. Molti metodi statici possono essere abbastanza simili a funzioni, in quanto in genere non hanno uno stato (non sempre vero).

Supponiamo che una funzione sia un blocco di codice (di solito con il suo ambito e talvolta con la sua propria chiusura) che può ricevere alcuni argomenti e può anche restituire un risultato.

Un metodo è una funzione di proprietà di un oggetto (in alcuni sistemi orientati agli oggetti, è più corretto affermare che appartiene a una classe). Essere & Quot; posseduto & Quot; da un oggetto / classe significa che si fa riferimento al metodo attraverso l'oggetto / classe; ad esempio, in Java se si desidera invocare un metodo " open () " di proprietà di un oggetto " door " devi scrivere " door.open () " ;.

Di solito i metodi ottengono anche alcuni attributi extra che descrivono il loro comportamento all'interno dell'oggetto / classe, ad esempio: visibilità (relativa al concetto di incapsulamento orientato agli oggetti) che definisce da quali oggetti (o classi) il metodo può essere invocato.

In molti linguaggi orientati agli oggetti, tutte le " funzioni " appartengono ad alcuni oggetti (o classi) e quindi in queste lingue non ci sono funzioni che non sono metodi.

I metodi sono funzioni di classi. Nel gergo normale, le persone scambiano il metodo e funzionano dappertutto. Fondamentalmente puoi pensarli come la stessa cosa (non sei sicuro che le funzioni globali siano chiamate metodi).

http://en.wikipedia.org/wiki/Method_(computer_science)

Una funzione è un concetto matematico. Ad esempio:

f(x,y) = sin(x) + cos(y)

dice che la funzione f () restituirà il peccato del primo parametro aggiunto al coseno del secondo parametro. È solo matematica. Come accade sin () e cos () sono anche funzioni. Una funzione ha un'altra proprietà: tutte le chiamate a una funzione con gli stessi parametri, dovrebbero restituire lo stesso risultato.

Un metodo, d'altra parte, è una funzione correlata a un oggetto in un linguaggio orientato agli oggetti. Ha un parametro implicito: l'oggetto su cui si agisce (ed è stato).

Quindi, se hai un oggetto Z con un metodo g (x), potresti vedere quanto segue:

Z.g(x) = sin(x) + cos(Z.y)

In questo caso, viene passato il parametro x, lo stesso dell'esempio di funzione precedente. Tuttavia, il parametro di cos () è un valore che vive all'interno dell'oggetto Z. Z e i dati che vivono al suo interno (Z.y) sono parametri impliciti del metodo z () di Z.

La funzione o un metodo è un pezzo di codice richiamabile che esegue alcune operazioni e facoltativamente restituisce un valore.

In C viene utilizzato il termine funzione. Java & amp; C # le persone direbbero che è un metodo (e una funzione in questo caso è definita all'interno di una classe / oggetto).

Un programmatore C ++ potrebbe chiamarlo una funzione o talvolta un metodo (a seconda se stanno scrivendo un codice c ++ in stile procedurale o stanno facendo un modo orientato agli oggetti di C ++, anche un programmatore C / C ++ potrebbe probabilmente chiamalo funzione perché il termine "metodo" è usato meno spesso nella letteratura C / C ++).

Usa una funzione chiamando semplicemente il suo nome come,

result = mySum(num1, num2);


Chiameresti un metodo facendo prima riferimento al suo oggetto come,

result = MyCalc.mySum(num1,num2);

Storicamente, potrebbe esserci stata una sottile differenza con un " metodo " essere qualcosa che non restituisce un valore e una " funzione " uno che lo fa. Ogni lingua ha il suo lessico dei termini con un significato speciale.

In " C " , la parola " funzione " significa una routine di programma .

In Java , il termine " funzione " non ha alcun significato speciale. Considerando che & Quot; metodo & Quot; indica una delle routine che costituisce l'implementazione di una classe.

In C # che si tradurrebbe in:

public void DoSomething() {} // method
public int DoSomethingAndReturnMeANumber(){} // function

Ma davvero, ribadisco che non c'è davvero alcuna differenza nei 2 concetti. Se si utilizza il termine & Quot; funzione & Quot; nelle discussioni informali su Java, la gente supporrà che intendevi " metodo " e vai avanti. Non utilizzarlo in documenti o presentazioni appropriati su Java, altrimenti sembrerai stupido.

I metodi su una classe agiscono sull'istanza della classe, chiamata oggetto.

class Example
{
   public int data = 0; // Each instance of Example holds its internal data. This is a "field", or "member variable".

   public void UpdateData() // .. and manipulates it (This is a method by the way)
   {
      data = data + 1;
   }

   public void PrintData() // This is also a method
   {
      Console.WriteLine(data);
   }
}

class Program
{
   public static void Main()
   {
       Example exampleObject1 = new Example();
       Example exampleObject2 = new Example();

       exampleObject1.UpdateData();
       exampleObject1.UpdateData();

       exampleObject2.UpdateData();

       exampleObject1.PrintData(); // Prints "2"
       exampleObject2.PrintData(); // Prints "1"
   }
}

In linguaggi OO come Object Pascal o C ++, un " metodo " è una funzione associata a un oggetto. Quindi, ad esempio, un & Quot; Dog & Quot; l'oggetto potrebbe avere un " bark " funzione e questo sarebbe considerato un " Metodo " ;. Al contrario, il & Quot; StrLen & Quot; la funzione è indipendente (fornisce la lunghezza di una stringa fornita come argomento). È quindi solo una funzione & Quot; & Quot; Anche Javascript è tecnicamente orientato agli oggetti, ma presenta molte limitazioni rispetto a un linguaggio completo come C ++, C # o Pascal. Tuttavia, la distinzione dovrebbe ancora valere.

Un paio di ulteriori fatti: C # è completamente orientato agli oggetti, quindi non è possibile creare funzioni " standalone " In C # ogni funzione è legata a un oggetto ed è quindi, tecnicamente, un metodo & Quot; & Quot; Il kicker è che poche persone in C # si riferiscono a loro come & Quot; metodi & Quot; - usano semplicemente il termine " funzioni " perché non c'è alcuna vera distinzione da fare.

Finalmente - solo così tutti i guru di Pascal non saltano su di me qui - Pascal distingue anche tra " funzioni " (che restituiscono un valore) e " procedure " quale no. C # non fa questa distinzione in modo esplicito sebbene sia possibile, ovviamente, scegliere di restituire un valore oppure no.

Dato che hai citato Python, quanto segue potrebbe essere un'utile illustrazione della relazione tra metodi e oggetti nella maggior parte dei linguaggi orientati agli oggetti moderni. In poche parole quello che chiamano & Quot; metodo & Quot; è solo una funzione a cui viene passato un argomento in più (come hanno sottolineato altre risposte), ma Python lo rende più esplicito della maggior parte delle lingue.

# perfectly normal function
def hello(greetee):
  print "Hello", greetee

# generalise a bit (still a function though)
def greet(greeting, greetee):
  print greeting, greetee

# hide the greeting behind a layer of abstraction (still a function!)
def greet_with_greeter(greeter, greetee):
  print greeter.greeting, greetee

# very simple class we can pass to greet_with_greeter
class Greeter(object):
  def __init__(self, greeting):
    self.greeting = greeting

  # while we're at it, here's a method that uses self.greeting...
  def greet(self, greetee):
    print self.greeting, greetee

# save an object of class Greeter for later
hello_greeter = Greeter("Hello")

# now all of the following print the same message
hello("World")
greet("Hello", "World")
greet_with_greeter(hello_greeter, "World")
hello_greeter.greet("World")

Ora confronta la funzione greet_with_greeter e il metodo greet: l'unica differenza è il nome del primo parametro (nella funzione l'ho chiamato " greeter " ;, nel metodo I chiamato " self "). Quindi posso usare il metodo greet2 esattamente allo stesso modo in cui uso la funzione object.method(args) (usando la sintassi & Quot; punto & Quot; per ottenerlo, dal momento che l'ho definito all'interno di una classe) :

Greeter.greet(hello_greeter, "World")

Quindi ho effettivamente trasformato un metodo in una funzione. Posso trasformare una funzione in un metodo? Bene, poiché Python ti consente di fare confusione con le classi dopo che sono state definite, proviamo:

Greeter.greet2 = greet_with_greeter
hello_greeter.greet2("World")

Sì, la funzione method(object, args) è ora nota anche come metodo <=>. Questo mostra l'unica vera differenza tra un metodo e una funzione: quando chiami un metodo & Quot; su & Quot; un oggetto chiamando <=>, la lingua lo trasforma magicamente in <=>.

(I puristi di OO potrebbero sostenere che un metodo è qualcosa di diverso da una funzione, e se entri in Python o Ruby avanzato o Smalltalk!) inizierai a vedere il loro punto. Inoltre alcune lingue danno ai metodi un accesso speciale ai bit oggetto. Ma la principale differenza concettuale è ancora il parametro extra nascosto.)

La funzione è un insieme di logiche che possono essere utilizzate per manipolare i dati.

While, Method è la funzione utilizzata per manipolare i dati dell'oggetto a cui appartiene. Quindi tecnicamente, se hai una funzione che non è completamente correlata alla tua classe ma che è stata dichiarata nella classe, non è un metodo; Si chiama cattivo design.

per me: la funzione di un metodo e una funzione è la stessa se sono d'accordo che:

  • una funzione può restituire un valore
  • può prevedere parametri

Proprio come qualsiasi parte di codice in cui potresti avere oggetti che inserisci e potresti avere un oggetto che ne deriva. Nel fare ciò potrebbero cambiare lo stato di un oggetto ma ciò non cambierebbe il loro funzionamento di base per me.

Potrebbe esserci una differenza nella definizione delle funzioni di chiamata di oggetti o altri codici. Ma non è qualcosa per una differenza verbale ed è per questo che le persone li scambiano? L'esempio menzionato di calcolo con cui starei attento. perché assumo impiegati per fare i miei calcoli:

new Employer().calculateSum( 8, 8 );

In questo modo posso fare affidamento sul fatto che un datore di lavoro sia responsabile dei calcoli. Se vuole più soldi, lo libero e lascio che la funzione di collezionista di carabine di disporre di impiegati inutilizzati faccia il resto e ottenga un nuovo impiegato.

Persino sostenere che un metodo è una funzione di oggetti e una funzione non calcolata non mi aiuterà. Il descrittore della funzione stessa e idealmente la documentazione della funzione mi diranno di cosa ha bisogno e cosa può restituire. Il resto, come manipolare lo stato di alcuni oggetti, non è molto trasparente per me. Mi aspetto che funzioni e metodi forniscano e manipolino ciò a cui sostengono senza bisogno di sapere in dettaglio come lo fanno. Anche una pura funzione computazionale potrebbe cambiare lo stato della console o accodarsi a un file di registro.

Dalla mia comprensione un metodo è qualsiasi operazione che può essere eseguita su una classe. È un termine generale utilizzato nella programmazione.

In molte lingue i metodi sono rappresentati da funzioni e subroutine. La principale distinzione che la maggior parte delle lingue usa per queste è che le funzioni possono restituire un valore al chiamante e una subroutine no. Tuttavia, molte lingue moderne hanno solo funzioni, ma queste non possono facoltativamente restituire alcun valore.

Ad esempio, supponiamo che tu voglia descrivere un gatto e vorresti che fosse in grado di sbadigliare. Dovresti creare una classe Cat, con un metodo Yawn, che molto probabilmente sarebbe una funzione senza alcun valore di ritorno.

Per un'approssimazione del primo ordine, un metodo (in stile O ++ in C ++) è un'altra parola per una funzione membro, ovvero una funzione che fa parte di una classe.

In linguaggi come C / C ++ puoi avere funzioni che non sono membri di una classe; non si chiama una funzione non associata a una classe un metodo.

Le persone IMHO volevano solo inventare nuove parole per facilitare la comunicazione tra i programmatori quando volevano fare riferimento a funzioni all'interno di oggetti.

Se stai dicendo metodi intendi funzioni all'interno della classe. Se stai dicendo funzioni intendi semplicemente funzioni al di fuori della classe.

La verità è che entrambe le parole sono usate per descrivere le funzioni. Anche se lo hai usato nel modo sbagliato, non succede nulla di sbagliato. Entrambe le parole descrivono bene ciò che vuoi ottenere nel tuo codice.

La funzione è un codice che deve svolgere un ruolo ( una funzione ) nel fare qualcosa. Il metodo è un metodo per risolvere il problema.

Fa la stessa cosa. E 'la stessa cosa. Se vuoi essere super preciso e seguire la convenzione, puoi chiamare metodi come funzioni all'interno degli oggetti.

La funzione è il concetto che appartiene principalmente alla programmazione orientata alla procedura in cui una funzione è un'entità che può elaborare i dati e restituire valore

Metodo è il concetto di programmazione orientata agli oggetti in cui un metodo è un membro di una classe che si occupa principalmente dei membri della classe.

Non compliciamo troppo quella che dovrebbe essere una risposta molto semplice. Metodi e funzioni sono la stessa cosa. Chiamate una funzione una funzione quando è al di fuori di una classe e chiamate una funzione un metodo quando è scritta all'interno di una classe.

Non sono un esperto, ma questo è quello che so:

  1. La funzione è un termine in linguaggio C, si riferisce a un pezzo di codice e il nome della funzione sarà l'identificatore per utilizzare questa funzione.

  2. Metodo è il termine OO, in genere ha questo puntatore nel parametro della funzione. Non puoi invocare questo pezzo di codice come C, devi usare l'oggetto per invocarlo.

  3. Anche i metodi invoke sono diversi. Qui invoca il significato per trovare l'indirizzo di questo pezzo di codice. C / C ++, il tempo di collegamento utilizzerà il simbolo della funzione per individuare.

  4. Objecive-C è diverso. Richiama il significato di una funzione C per utilizzare la struttura dei dati per trovare l'indirizzo. Significa che tutto è noto in fase di esecuzione.

So che molti altri hanno già risposto, ma ho trovato che segue è una risposta semplice, ma efficace a riga singola. Anche se non sembra molto meglio delle altre risposte qui, ma se lo leggi attentamente, ha tutto ciò che devi sapere sul metodo vs funzione.

Un metodo è una funzione che ha un ricevitore definito, in termini di OOP, un metodo è una funzione su un'istanza di un oggetto.

Differenza tra metodi e funzioni

Da leggere questo documento su Microsoft

  

I membri che contengono codice eseguibile sono noti collettivamente come membri della funzione di una classe. La sezione precedente descrive i metodi, che sono il tipo principale di membri della funzione. Questa sezione descrive gli altri tipi di membri di funzioni supportati da C #: costruttori, proprietà, indicizzatori, eventi, operatori e finalizzatori.

Quindi i metodi sono il sottoinsieme delle funzioni. Ogni metodo è una funzione ma non tutte le funzioni sono un metodo, ad esempio un constructor non può essere definito un metodo ma è una funzione.

Ecco alcune spiegazioni per metodo vs. funzione usando esempi JavaScript:

test(20, 50); è la funzione di definizione e utilizzo per eseguire alcuni passaggi o restituire qualcosa che può essere archiviato / utilizzato da qualche parte.

  

Puoi riutilizzare il codice: definisci il codice una volta e usalo più volte.

     

È possibile utilizzare più volte lo stesso codice con argomenti diversi, per produrre risultati diversi.

var x = myFunction(4, 3);   // Function is called, return value will end up in x

function myFunction(a, b) {
    return a * b;          // Function returns the product of a and b
}

var test = something.test(); qui test () può essere un metodo per alcuni oggetti o un prototipo personalizzato per oggetti incorporati, ecco un'altra spiegazione:

  

I metodi JavaScript sono le azioni che possono essere eseguite sugli oggetti.

     

Un metodo JavaScript è una proprietà che contiene una definizione di funzione.

Proprietà / metodo integrati per le stringhe in javascript:

var message = "Hello world!";
var x = message.toUpperCase();
//Output: HELLO WORLD!

Esempio personalizzato:

function person(firstName, lastName, age, eyeColor) {
    this.firstName = firstName;  
    this.lastName = lastName;
    this.age = age;
    this.eyeColor = eyeColor;
    this.changeName = function (name) {
        this.lastName = name;
    };
}

something.changeName("SomeName"); //This will change 'something' objject's name to 'SomeName'

Puoi anche definire proprietà per String, Array, ecc. per esempio

String.prototype.distance = function (char) {
    var index = this.indexOf(char);

    if (index === -1) {
        console.log(char + " does not appear in " + this);
    } else {
        console.log(char + " is " + (this.length - index) + " characters from the end of the string!");
    }
};

var something = "ThisIsSomeString"

// now use distance like this, run and check console log

something.distance("m");

Alcuni riferimenti: Metodo oggetto Javascript , Funzioni , Ulteriori informazioni sul prototipo

Funzione: una funzione in un pezzo di codice indipendente che include un po 'di logica e deve essere chiamata in modo indipendente e definita al di fuori della classe.

Metodo: un metodo è un pezzo di codice indipendente che viene chiamato in riferimento a un oggetto e che viene definito all'interno della classe.

In C ++, a volte, il metodo viene utilizzato per riflettere la nozione di funzione membro di una classe. Tuttavia, recentemente ho trovato una dichiarazione nel libro & # 171; Il linguaggio di programmazione C ++ 4a edizione & # 187 ;, a pagina 586 & Quot; Classi derivate & Quot;

  

Una funzione virtuale viene talvolta chiamata metodo.

Questo è un po 'confuso, ma ha detto a volte , quindi ha più o meno senso, il creatore di C ++ tende a vedere i metodi poiché le funzioni possono essere invocate sugli oggetti e possono comportarsi polimorfiche.

Una classe è la raccolta di alcuni dati e facoltativamente funziona con un costruttore.

Durante la creazione di un'istanza (copia, replica) di quella particolare classe il costruttore inizializza la classe e restituisce un oggetto.

Ora la classe diventa oggetto (senza costruttore) & Amp; Le funzioni sono conosciute come metodo nel contesto dell'oggetto.

Quindi sostanzialmente

Classe < == new == > Object

Funzione < == new == > Metodo

In java si dice generalmente che il nome del costruttore è uguale al nome della classe ma in realtà quel costruttore è come un blocco di istanza e un blocco statico ma con un utente che definisce il tipo restituito (cioè il tipo di classe)

Mentre la classe può avere un blocco statico, un blocco istanza, un costruttore, una funzione L'oggetto generalmente ha solo dati & Amp; metodo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top