Java (i każdy inny język programowania) jest modelowana pod względem typów i wartości . Na poziomie teoretycznym wartość jest reprezentacją pewnej ilości informacji, a typ to zbiór wartości. Kiedy mówimy, że wartość X jest instancją typu Y, to po prostu mówimy, że X jest członkiem zbioru wartości, który jest typem Y.
To właśnie oznacza termin „instancja”: opisuje związek, a nie rzecz.
System typów języka programowania Java obsługuje dwa rodzaje typów: typy pierwotne i typy referencyjne . Typy referencyjne są dalej podzielone na klasy i typy tablic . Java obiekt jest przykładem typu odniesienia.
Obiekt jest instancją klasy lub tablicą. ( JLS 4.3.1 )
To jest pogląd teoretyczny typu.
W praktyce większość programistów Java traktuje słowa „instancja” i „obiekt” jako synonimy. (I to dotyczy mnie, więc staram się coś szybko wyjaśnić.) Większość programistów używa słowa „wartość” zamiast „instancja” w odniesieniu do instancji typu pierwotnego.
Naprawdę doceniam twoją odpowiedź, i prawie ją otrzymałem, jeszcze jedno pytanie. Mówimy - „Za każdym razem, gdy kompilator trafi w konstruktor z argumentem 0, tworzy instancję klasy.”. W tym kontekście, co tak naprawdę jest stworzone jako instancja lub obiekt? Chyba obiekt i używamy słowa „instancja” jako synonimu. Ale byłoby miło, gdybyś lepiej to potwierdził.
Pranjut
3
@Ryan: Zasadniczo tak: tworzy obiekt, który jest instancją danej klasy. (Należy jednak pamiętać, że cytowane zdanie mówi o „instancji klasy”, a nie tylko o „instancji” ... więc autor nie używa tutaj synonimu „instancja”).
Stephen C
1
@RuneFS - „modelowanie”, o którym mówię, nie dotyczy reprezentacji. To jest teoretyczne. Tak, w niektórych językach istnieją obiekty, które oznaczają typy, a nawet umożliwiają wyliczenie wszystkich wystąpień typu. Ale te właściwości raczej wzmacniają ogólne „modelowanie” niż je unieważniają.
Stephen C
1
@RuneFS - Nie ... mówię o „teorii typów”. To gałąź matematyki. Jest niezależny od technologii używanej do uruchamiania programów. Teoria typów najbliższa obliczeniom to rachunek lambda. (Jeśli jesteś zainteresowany, spróbuj zdobyć kopię „Typów i języków programowania” Benjamina C. Pierce'a.)
Stephen C
1
Popełniasz ten sam błąd, co user2390183. Traktujesz zmienne jako „nazwy”. Oni nie są. Zmienne to „obiekty referencyjne”, które zawierają odniesienia do obiektów. Obiekty nie mają wewnętrznych nazw. Odniesienia są najbliższe „nazwie” obiektu, z wyjątkiem tego, że nie mają stałej reprezentacji. (GC może przesuwać obiekt, który zmienia wzorzec bitów używany do reprezentowania odniesienia.)
Stephen C
96
Klasa jest plan, który używasz do tworzenia obiektów . Obiekt jest instancją klasy - to konkretna „rzecz” utworzona przy użyciu określonej klasy. Zatem „obiekt” i „instancja” to to samo, ale słowo „instancja” wskazuje na związek obiektu z jego klasą.
Łatwo to zrozumieć, patrząc na przykład. Załóżmy na przykład, że masz klasę House. Twój własny dom jest przedmiotem i przykładem klasy House. Dom twojej siostry to kolejny obiekt (kolejna klasa House).
// Class House describes what a house isclassHouse{
// ...
}
// You can use class House to create objects (instances of class House)
House myHouse = new House();
House sistersHouse = new House();
Klasa Houseopisuje pojęcie tego, czym jest dom, i istnieją konkretne, konkretne domy, które są obiektami i przykładami klasy House.
Uwaga: w Javie jest to dokładnie to samo, co we wszystkich językach programowania obiektowego.
class House {// blue print for House Objects}class Car {// blue print for Instances of Class Car }House myHouse = House new();Car myCar = Car new();
Suraj Jain
myHouse i myCar są obiektami myHouse jest instancją House (odnosi Object-myHouse do swojego Class-House) myCar jest instancją Car. Czy to prawda, zobacz powyższą odpowiedź użytkownika2390183, czy jest poprawna, czy nie?
Suraj Jain
29
Klasa jest w zasadzie definicją i zawiera kod obiektu. Obiekt jest instancją klasy
na przykład jeśli powiesz
String word = new String();
klasa jest klasą String, która opisuje słowo obiektu (instancji).
Kiedy klasa jest deklarowana, nie jest przydzielana żadna pamięć, więc klasa jest tylko szablonem.
Po zadeklarowaniu obiektu klasy alokowana jest pamięć.
Czy chodziło Ci o to, że obiekty i instancje są takie same?
Pranjut
Dzięki David za link. Z tematów, które otrzymałem. Wszystkie rzeczy ze świata rzeczywistego, które mają stan i zachowanie, można nazwać „przedmiotem”. A do klasyfikacji tych obiektów używamy klasy (klasa to plan, z którego tworzone są poszczególne obiekty). I mówi, że obiektami klasy są instancje. A teraz niech ktoś mi powie, jakie są różnice między obiektem a instancją? Czy to oznacza, że obiekt tak naprawdę nie istnieje w kontekście programowania, a instancja reprezentuje w nim obiekt?
Pranjut
@Mustafa: Przepraszam, że zaprzeczam, ale według JLS tablica jest również obiektem w Javie. Przekonasz się, że JLS w ogóle nie definiuje terminu „instancja”. Zobacz moją odpowiedź.
Stephen C
@Ryan: Zobacz moją odpowiedź dotyczącą różnicy między „instancją” a „obiektem”. Odpowiedź i komentarz @ Mustafy są (IMO) mylące.
Stephen C
@mustafabar - "Gdy deklarowana jest klasa, nie jest przydzielana żadna pamięć, więc klasa jest tylko szablonem." - I to też nie jest prawda. Pamięć jest przydzielana (przynajmniej) do reprezentowania staticzmiennych klasy. (A także innych rzeczy, które są związane z tożsamością typu klasy.)
Stephen C,
13
Podoba mi się wyjaśnienie Jespera w kategoriach laika
Improwizując przykłady z odpowiedzi Jespera,
classHouse{
// blue print for House Objects
}
classCar{
// blue print for Instances of Class Car
}
House myHouse = new House();
Car myCar = new Car();
myHouse i myCar to obiekty
myHouse jest instancją House (odnosi Object-myHouse do swojego Class-House) myCar jest instancją Car
w skrócie
„myHouse jest wystąpienie z klasy Domu”, który jest taki sam jak powiedzenie „myHouse to obiekt z typu dom”
W Javie obiekty są tworzone w pamięci sterty. Wymagają one odniesienia do wskazania i użycia w naszej aplikacji. Odniesienie zawiera lokalizację w pamięci obiektu, z którym możemy korzystać z obiektów w naszej aplikacji. Krótko mówiąc, odniesienie to nic innego jak nazwa zmiennej, która przechowuje adres obiektu, którego instancja została utworzona w miejscu pamięci.
An instanceto termin ogólny oznaczający object. FYI, Objectto klasa.
Na przykład,
Class A{
}
A ref = new A();
W powyższym fragmencie kodu ref jest odniesieniem do obiektu klasy A wygenerowanego na stercie.
Szczerze mówiąc, definicje bloga Alfreda czuję się bardziej komfortowo :
Obiekt : obiekty świata rzeczywistego mają dwie główne cechy, stan i zachowanie. Człowiek ma stan (imię, wiek) i zachowanie (bieganie, spanie). Samochód posiada stan (aktualna prędkość, aktualny bieg) i zachowanie (hamowanie, zmiana biegu). Obiekty oprogramowania są koncepcyjnie podobne do obiektów świata rzeczywistego: również składają się ze stanu i powiązanego zachowania. Obiekt przechowuje swój stan w polach i ujawnia swoje zachowanie za pomocą metod.
Klasa : to „szablon” / „plan” używany do tworzenia obiektów. Zasadniczo klasa składa się z pola, pola statycznego, metody, metody statycznej i konstruktora. Pole służy do przechowywania stanu klasy (np .: nazwa obiektu Studenta). Metoda służy do reprezentowania zachowania klasy (np. W jaki sposób obiekt Studenta ma się podnieść). Konstruktor służy do tworzenia nowej instancji klasy.
Instancja : instancja to unikatowa kopia klasy reprezentującej obiekt. Po utworzeniu nowej instancji klasy maszyna JVM przydzieli przestrzeń pamięci dla tej instancji klasy.
Biorąc pod uwagę następny przykład:
publicclassPerson{
privateint id;
private String name;
privateint age;
publicPerson(int id, String name, int age){
this.id = id;
this.name = name;
this.age = age;
}
publicinthashCode(){
finalint prime = 31;
int result = 1;
result = prime * result + id;
return result;
}
publicbooleanequals(Object obj){
if (this == obj)
returntrue;
if (obj == null)
returnfalse;
if (getClass() != obj.getClass())
returnfalse;
Person other = (Person) obj;
if (id != other.id)
returnfalse;
returntrue;
}
publicstaticvoidmain(String[] args){
//case 1
Person p1 = new Person(1, "Carlos", 20);
Person p2 = new Person(1, "Carlos", 20);
//case 2
Person p3 = new Person(2, "John", 15);
Person p4 = new Person(3, "Mary", 17);
}
}
W przypadku 1 istnieją dwie instancje klasy Person, ale obie reprezentują ten sam obiekt.
W przypadku 2 istnieją dwie instancje klasy Person, ale każda instancja reprezentuje inny obiekt.
Zatem klasa, obiekt i instancja to dwie różne rzeczy. Obiekt i instancja nie są synonimami, jak sugeruje odpowiedź wybrana jako prawidłowa odpowiedź.
Jeśli masz program modelujący samochody, masz klasę reprezentującą samochody, więc w Kodzie możesz powiedzieć:
Car someCar = new Car();
someCar jest teraz instancją klasy Car. Jeśli program jest używany w warsztacie, a someCar reprezentuje Twój samochód w ich systemie, to Twój samochód jest obiektem.
Tak więc Car to klasa, która może reprezentować dowolny samochód w świecie rzeczywistym. SomeCar jest instancją klasy Car, a niektóreCare reprezentuje jeden przedmiot z prawdziwego życia (twój samochód)
jednak instancja i przedmiot są bardzo często używane wymiennie, jeśli chodzi o omawianie kodowania
Ściśle mówiąc someCarjest to odniesienie do instancji samochodu. Sama instancja nie ma nazwy.
Joachim Sauer
2
Każdy rodzaj danych przechowywanych i przetwarzanych przez komputer jest w swojej najbardziej podstawowej reprezentacji wierszem bitów. Sposób, w jaki te bity są interpretowane, odbywa się za pomocą typów danych. Typy danych mogą być prymitywne lub złożone. Prymitywne typy danych to na przykład int lub double. Mają określoną długość i określony sposób interpretacji. W przypadku liczby całkowitej zwykle pierwszy bit jest używany na znak, pozostałe są używane jako wartość.
Złożone typy danych mogą być połączeniami pierwotnych i innych złożonych typów danych i nazywane są w języku Java „Klasą”.
Można zdefiniować złożony typ danych PeopleName składający się z dwóch ciągów znaków o nazwie imię i nazwisko. Każdy ciąg w Javie to inny złożony typ danych. Zwracane ciągi znaków są (prawdopodobnie) zaimplementowane przy użyciu pierwotnego typu danych char, dla którego Java wie, ile bitów zajmuje do przechowywania i jak je zinterpretować.
Kiedy tworzysz wystąpienie typu danych, otrzymujesz obiekt, a Twoje komputery rezerwują dla niego trochę pamięci i zapamiętują jego lokalizację oraz nazwę tego wystąpienia. Wystąpienie PeopleName w pamięci zajmie miejsce dwóch zmiennych typu String oraz trochę więcej na potrzeby księgowości. Liczba całkowita w Javie zajmuje 32 bity.
Złożone typy danych mogą mieć przypisane metody. Metody mogą wykonywać akcje na swoich argumentach lub na wystąpieniu typu danych, z którego wywołujesz tę metodę. Jeśli masz dwa wystąpienia PeopleName o nazwie p1 i p2 i wywołujesz metodę p1.getFirstName (), zwykle zwraca ona imię pierwszej osoby, ale nie imię drugiej osoby.
Miejsce może zostać przydzielone podczas „tworzenia” klasy. Miejsce jest wymagane dla wszystkich zmiennych statycznych zdefiniowanych przez klasę. (A „logiczne” kontra „fizyczne” to rozciąganie, ponieważ reprezentacja obiektu jest tylko pomocą wzorców bitowych w niektórych urządzeniach pamięci.)
Stephen C
@StephenC jaka może być inna różnica?
Zobacz moją odpowiedź. Na to pytanie nie można odpowiedzieć, mówiąc tylko o różnicach.
Stephen C
0
Klasa to plan potrzebny do wykonania obiektu (= instancji).
Różnica między przedmiotem a instancją polega na tym, że obiekt jest rzeczą, a instancja jest relacją.
Innymi słowy, instancja opisuje relację obiektu do klasy, z której obiekt został utworzony.
Definicja „Obiekt jest instancją klasy” jest koncepcyjnie błędna, ale poprawna zgodnie z implementacją. W rzeczywistości funkcje obiektowe są zaczerpnięte z prawdziwego życia, aby skupić umysł programisty od mniej do więcej. W prawdziwym życiu zajęcia mają na celu zarządzanie obiektem, np. My, ludzie, mamy kastę, religię, narodowość i wiele więcej. Te kasty, religia, narodowość są klasami i nie istnieją bez ludzi. Ale w implementacji nie ma obiektów bez klas. Obiekt - obiekt to dyskretna jednostka posiadająca dobrze zdefiniowany atrybut. Tutaj dyskretne oznacza coś, co czyni go wyjątkowym od innych. Dobrze zdefiniowany atrybut ma sens w pewnym kontekście. Class- Klasyfikacja obiektów mających pewne wspólne zachowanie lub obiekty pewnego wspólnego typu.
Chociaż powyższe odpowiedzi są poprawne, innym sposobem myślenia o klasach i obiektach byłoby użycie przykładów z prawdziwego świata: klasa o nazwie Animal może zawierać obiekty takie jak Kot, Pies lub Ryba. Przedmiot z tytułem Biblii należałby do klasy Book, itd. Klasy są ogólne, przedmioty są szczegółowe. Ten przykład myślowy pomógł mi, gdy uczyłem się języka Java.
To tylko słowa. Właściwie nie wyjaśniasz, co znaczą te słowa. (I faktycznie, klasy Java NIE zachowują się jak szablony, ani w prawdziwym życiu, ani w taki sposób, jak w językach takich jak Javascript, Python, Ruby itp.)
Odpowiedzi:
Java (i każdy inny język programowania) jest modelowana pod względem typów i wartości . Na poziomie teoretycznym wartość jest reprezentacją pewnej ilości informacji, a typ to zbiór wartości. Kiedy mówimy, że wartość X jest instancją typu Y, to po prostu mówimy, że X jest członkiem zbioru wartości, który jest typem Y.
To właśnie oznacza termin „instancja”: opisuje związek, a nie rzecz.
System typów języka programowania Java obsługuje dwa rodzaje typów: typy pierwotne i typy referencyjne . Typy referencyjne są dalej podzielone na klasy i typy tablic . Java obiekt jest przykładem typu odniesienia.
To jest pogląd teoretyczny typu.
W praktyce większość programistów Java traktuje słowa „instancja” i „obiekt” jako synonimy. (I to dotyczy mnie, więc staram się coś szybko wyjaśnić.) Większość programistów używa słowa „wartość” zamiast „instancja” w odniesieniu do instancji typu pierwotnego.
źródło
user2390183
. Traktujesz zmienne jako „nazwy”. Oni nie są. Zmienne to „obiekty referencyjne”, które zawierają odniesienia do obiektów. Obiekty nie mają wewnętrznych nazw. Odniesienia są najbliższe „nazwie” obiektu, z wyjątkiem tego, że nie mają stałej reprezentacji. (GC może przesuwać obiekt, który zmienia wzorzec bitów używany do reprezentowania odniesienia.)Klasa jest plan, który używasz do tworzenia obiektów . Obiekt jest instancją klasy - to konkretna „rzecz” utworzona przy użyciu określonej klasy. Zatem „obiekt” i „instancja” to to samo, ale słowo „instancja” wskazuje na związek obiektu z jego klasą.
Łatwo to zrozumieć, patrząc na przykład. Załóżmy na przykład, że masz klasę
House
. Twój własny dom jest przedmiotem i przykładem klasyHouse
. Dom twojej siostry to kolejny obiekt (kolejna klasaHouse
).// Class House describes what a house is class House { // ... } // You can use class House to create objects (instances of class House) House myHouse = new House(); House sistersHouse = new House();
Klasa
House
opisuje pojęcie tego, czym jest dom, i istnieją konkretne, konkretne domy, które są obiektami i przykładami klasyHouse
.Uwaga: w Javie jest to dokładnie to samo, co we wszystkich językach programowania obiektowego.
źródło
class House {
// blue print for House Objects
}
class Car {
// blue print for Instances of Class Car
}
House myHouse = House new();
Car myCar = Car new();
Klasa jest w zasadzie definicją i zawiera kod obiektu. Obiekt jest instancją klasy
na przykład jeśli powiesz
String word = new String();
klasa jest klasą String, która opisuje słowo obiektu (instancji).
Kiedy klasa jest deklarowana, nie jest przydzielana żadna pamięć, więc klasa jest tylko szablonem.
Po zadeklarowaniu obiektu klasy alokowana jest pamięć.
źródło
static
zmiennych klasy. (A także innych rzeczy, które są związane z tożsamością typu klasy.)Podoba mi się wyjaśnienie Jespera w kategoriach laika
Improwizując przykłady z odpowiedzi Jespera,
class House { // blue print for House Objects } class Car { // blue print for Instances of Class Car } House myHouse = new House(); Car myCar = new Car();
myHouse i myCar to obiekty
myHouse jest instancją House (odnosi Object-myHouse do swojego Class-House) myCar jest instancją Car
w skrócie
„myHouse jest wystąpienie z klasy Domu”, który jest taki sam jak powiedzenie „myHouse to obiekt z typu dom”
źródło
Klasa to typ danych, ten typ służy do tworzenia obiektów.
Instancja jest logiczna, ale obiekt jest fizyczny oznacza, że zajmuje trochę pamięci.
Możemy stworzyć instancję dla klasy abstrakcyjnej, jak również dla interfejsu, ale nie możemy stworzyć
dla nich obiektu.
Obiekt jest instancją klasy, a instancja oznacza reprezentatywną dla klasy, tj. Obiekt.
Instancja odnosi się do odwołania do obiektu.
Obiekt faktycznie wskazuje na adres pamięci tej instancji.
Nie możesz przesuwać instancji przez warstwy, ale możesz przesuwać obiekt nad warstwami
Nie możesz przechowywać instancji, ale możesz przechowywać obiekt
Pojedynczy obiekt może mieć więcej niż jedną instancję.
Instancja będzie miała zarówno definicję klasy, jak i definicję obiektu, podczas gdy tak jak w obiekcie będzie miała tylko definicję obiektu.
Składnia obiektu:
Classname var=new Classname();
Ale na przykład kreacja zwraca tylko wskaźnik odnoszący się do obiektu, składnia jest następująca:
źródło
W Javie obiekty są tworzone w pamięci sterty. Wymagają one odniesienia do wskazania i użycia w naszej aplikacji. Odniesienie zawiera lokalizację w pamięci obiektu, z którym możemy korzystać z obiektów w naszej aplikacji. Krótko mówiąc, odniesienie to nic innego jak nazwa zmiennej, która przechowuje adres obiektu, którego instancja została utworzona w miejscu pamięci.
An
instance
to termin ogólny oznaczającyobject
. FYI,Object
to klasa.Na przykład,
Class A{ } A ref = new A();
W powyższym fragmencie kodu ref jest odniesieniem do obiektu klasy A wygenerowanego na stercie.
źródło
Szczerze mówiąc, definicje bloga Alfreda czuję się bardziej komfortowo :
Obiekt : obiekty świata rzeczywistego mają dwie główne cechy, stan i zachowanie. Człowiek ma stan (imię, wiek) i zachowanie (bieganie, spanie). Samochód posiada stan (aktualna prędkość, aktualny bieg) i zachowanie (hamowanie, zmiana biegu). Obiekty oprogramowania są koncepcyjnie podobne do obiektów świata rzeczywistego: również składają się ze stanu i powiązanego zachowania. Obiekt przechowuje swój stan w polach i ujawnia swoje zachowanie za pomocą metod.
Klasa : to „szablon” / „plan” używany do tworzenia obiektów. Zasadniczo klasa składa się z pola, pola statycznego, metody, metody statycznej i konstruktora. Pole służy do przechowywania stanu klasy (np .: nazwa obiektu Studenta). Metoda służy do reprezentowania zachowania klasy (np. W jaki sposób obiekt Studenta ma się podnieść). Konstruktor służy do tworzenia nowej instancji klasy.
Instancja : instancja to unikatowa kopia klasy reprezentującej obiekt. Po utworzeniu nowej instancji klasy maszyna JVM przydzieli przestrzeń pamięci dla tej instancji klasy.
Biorąc pod uwagę następny przykład:
public class Person { private int id; private String name; private int age; public Person (int id, String name, int age) { this.id = id; this.name = name; this.age = age; } public int hashCode() { final int prime = 31; int result = 1; result = prime * result + id; return result; } public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Person other = (Person) obj; if (id != other.id) return false; return true; } public static void main(String[] args) { //case 1 Person p1 = new Person(1, "Carlos", 20); Person p2 = new Person(1, "Carlos", 20); //case 2 Person p3 = new Person(2, "John", 15); Person p4 = new Person(3, "Mary", 17); } }
W przypadku 1 istnieją dwie instancje klasy Person, ale obie reprezentują ten sam obiekt.
W przypadku 2 istnieją dwie instancje klasy Person, ale każda instancja reprezentuje inny obiekt.
Zatem klasa, obiekt i instancja to dwie różne rzeczy. Obiekt i instancja nie są synonimami, jak sugeruje odpowiedź wybrana jako prawidłowa odpowiedź.
źródło
Jeśli masz program modelujący samochody, masz klasę reprezentującą samochody, więc w Kodzie możesz powiedzieć:
Car someCar = new Car();
someCar jest teraz instancją klasy Car. Jeśli program jest używany w warsztacie, a someCar reprezentuje Twój samochód w ich systemie, to Twój samochód jest obiektem.
Tak więc Car to klasa, która może reprezentować dowolny samochód w świecie rzeczywistym. SomeCar jest instancją klasy Car, a niektóreCare reprezentuje jeden przedmiot z prawdziwego życia (twój samochód)
jednak instancja i przedmiot są bardzo często używane wymiennie, jeśli chodzi o omawianie kodowania
źródło
someCar
jest to odniesienie do instancji samochodu. Sama instancja nie ma nazwy.Każdy rodzaj danych przechowywanych i przetwarzanych przez komputer jest w swojej najbardziej podstawowej reprezentacji wierszem bitów. Sposób, w jaki te bity są interpretowane, odbywa się za pomocą typów danych. Typy danych mogą być prymitywne lub złożone. Prymitywne typy danych to na przykład int lub double. Mają określoną długość i określony sposób interpretacji. W przypadku liczby całkowitej zwykle pierwszy bit jest używany na znak, pozostałe są używane jako wartość.
Złożone typy danych mogą być połączeniami pierwotnych i innych złożonych typów danych i nazywane są w języku Java „Klasą”.
Można zdefiniować złożony typ danych PeopleName składający się z dwóch ciągów znaków o nazwie imię i nazwisko. Każdy ciąg w Javie to inny złożony typ danych. Zwracane ciągi znaków są (prawdopodobnie) zaimplementowane przy użyciu pierwotnego typu danych char, dla którego Java wie, ile bitów zajmuje do przechowywania i jak je zinterpretować.
Kiedy tworzysz wystąpienie typu danych, otrzymujesz obiekt, a Twoje komputery rezerwują dla niego trochę pamięci i zapamiętują jego lokalizację oraz nazwę tego wystąpienia. Wystąpienie PeopleName w pamięci zajmie miejsce dwóch zmiennych typu String oraz trochę więcej na potrzeby księgowości. Liczba całkowita w Javie zajmuje 32 bity.
Złożone typy danych mogą mieć przypisane metody. Metody mogą wykonywać akcje na swoich argumentach lub na wystąpieniu typu danych, z którego wywołujesz tę metodę. Jeśli masz dwa wystąpienia PeopleName o nazwie p1 i p2 i wywołujesz metodę p1.getFirstName (), zwykle zwraca ona imię pierwszej osoby, ale nie imię drugiej osoby.
źródło
Koncepcja klas i obiektów polega na hermetyzowaniu logiki w pojedynczej jednostce programowania. Klasy to plany, z których tworzone są obiekty.
Oto przykład klasy reprezentującej samochód:
public class Car { int currentSpeed; String name; public void accelerate() { } public void park() { } public void printCurrentSpeed() { } }
Można tworzyć instancje tego obiektu wóz tak:
Car audi = new Car(); Car toyota = new Car();
Wziąłem przykład z tego samouczka
źródło
Klasa : Struktura
Przedmiot : Manifestacja fizyczna
Instancja : każdy obiekt utworzony z klasy
Odniesienie : adres obiektu
źródło
Klasa
Ma istnienie logiczne, tzn. Podczas tworzenia nie jest przydzielane żadne miejsce w pamięci.
To zbiór obiektów.
Klasa może być traktowana jako plan tworzenia obiektów.
Jest tworzony za pomocą słowa kluczowego class
Klasa definiuje metody i składowe danych, które będą posiadane przez Objects.
Obiekt
Ma istnienie fizyczne, tj. Przestrzeń pamięci jest przydzielana podczas jej tworzenia.
Jest to instancja klasy.
Obiekt jest unikalną jednostką, która zawiera elementy składowe danych i funkcje składowe razem w języku OOP.
Jest tworzony za pomocą nowego słowa kluczowego
Obiekt określa implementacje metod i wartości, które będą posiadane przez członków danych w klasie.
źródło
Klasa to plan potrzebny do wykonania obiektu (= instancji).
Różnica między przedmiotem a instancją polega na tym, że obiekt jest rzeczą, a instancja jest relacją.
Innymi słowy, instancja opisuje relację obiektu do klasy, z której obiekt został utworzony.
źródło
Definicja „Obiekt jest instancją klasy” jest koncepcyjnie błędna, ale poprawna zgodnie z implementacją. W rzeczywistości funkcje obiektowe są zaczerpnięte z prawdziwego życia, aby skupić umysł programisty od mniej do więcej. W prawdziwym życiu zajęcia mają na celu zarządzanie obiektem, np. My, ludzie, mamy kastę, religię, narodowość i wiele więcej. Te kasty, religia, narodowość są klasami i nie istnieją bez ludzi. Ale w implementacji nie ma obiektów bez klas. Obiekt - obiekt to dyskretna jednostka posiadająca dobrze zdefiniowany atrybut. Tutaj dyskretne oznacza coś, co czyni go wyjątkowym od innych. Dobrze zdefiniowany atrybut ma sens w pewnym kontekście. Class- Klasyfikacja obiektów mających pewne wspólne zachowanie lub obiekty pewnego wspólnego typu.
źródło
Chociaż powyższe odpowiedzi są poprawne, innym sposobem myślenia o klasach i obiektach byłoby użycie przykładów z prawdziwego świata: klasa o nazwie Animal może zawierać obiekty takie jak Kot, Pies lub Ryba. Przedmiot z tytułem Biblii należałby do klasy Book, itd. Klasy są ogólne, przedmioty są szczegółowe. Ten przykład myślowy pomógł mi, gdy uczyłem się języka Java.
źródło
Animal
jest to klasa iCat
instancja, czym jest moja kotka „Puszysta”?Klasa to szablon lub typ. Obiekt jest instancją klasy.
Na przykład:
public class Tweet { } Tweet newTweet = new Tweet();
Tweet jest klasą, a newTweet jest przedmiotem tej klasy.
źródło