Słowo Class pochodzi z Klasyfikacji ( A kategoria , do której coś się położyć ), teraz mamy wszystko słyszał, że klasa jest jak plan, ale co to dokładnie oznacza? Oznacza to, że klasa zawiera opis konkretnej kategorii ( chciałbym pokazać różnicę między klasą, obiektem i instancją na przykładzie z użyciem języka Java i poprosiłbym czytelników o wizualizację jej jako historii podczas czytania, a jeśli nie są zaznajomieni z java nie ma znaczenia ) Zacznijmy od stworzenia Kategorii o nazwie HumanBeing , więc program Java będzie to wyrażał w następujący sposób
class HumanBeing{
/*We will slowly build this category*/
}
Teraz, jakie atrybuty ma człowiek , ogólnie rzecz biorąc, imię , wiek , wzrost , waga ograniczmy się teraz do tych czterech atrybutów, dodajmy to do naszej kategorii
class HumanBeing{
private String Name;
private int Age;
private float Height;
private float Weight;
/*We still need to add methods*/
}
Teraz każda kategoria ma zachowanie, na przykład kategoria Pies zachowuje się szczekać, aportować, przewracać itp., Podobnie nasza kategoria HumanBeing może również zachowywać się w określony sposób, na przykład gdy pytamy naszego HumanBeing o Twoje imię / wiek / wagę / wysokość? Powinien podać nam swoje imię / wiek / wagę / wzrost, więc w Javie robimy to w następujący sposób
class HumanBeing{
private String Name;
private int Age;
private float Height;
private float Weight;
public HumanBeing(String Name,int Age,float Height,float Weight){
this.Name = Name;
this.Age = Age;
this.Height = Height;
this.Weight = Weight;
}
public String getName(){
return this.Name;
}
public int getAge(){
return this.age;
}
public float getHeight(){
return this.Height;
}
public float getWeight(){
return this.Weight;
}
}
Teraz dodaliśmy zachowanie do naszej kategorii HumanBeing , więc możemy zapytać o jego imię, wiek, wzrost, wagę, ale od kogo zapytasz o te szczegóły, ponieważ class HumanBeing
jest to tylko kategoria, jest to plan, na przykład architekt sporządza plan papier budynku, który chce zbudować, teraz nie możemy żyć dalej w planie ( jego opisie budynku ) możemy mieszkać w budynku tylko po jego zbudowaniu Więc tutaj musimy uczynić człowieka z naszej kategorii, którą opisane powyżej, więc jak to zrobimy w Javie
class Birth{
public static void main(String [] args){
HumanBeing firstHuman = new HumanBeing("Adam",25,6.2,90);
}
}
Teraz w powyższym przykładzie stworzyliśmy naszego pierwszego człowieka o imieniu wiek wzrost waga, więc co dokładnie dzieje się w powyższym kodzie? . Tworzymy instancję kategorii HumanBeing, czyli powstaje obiekt naszej klasy
Uwaga: Obiekt i instancja nie są synonimami W niektórych przypadkach wydaje się, że obiekt i instancja są synonimami, ale tak nie jest, podam oba przypadki
Przypadek 1: Obiekt i instancja wydają się być synonimami
Pozwólcie mi trochę rozwinąć, kiedy mówimy, że HumanBeing firstHuman = new HumanBeing("Adam",25,6.2,90);
obiekt naszej kategorii jest tworzony w pamięci sterty i jest do niego przydzielany jakiś adres i firstHuman
zawiera odniesienie do tego adresu, teraz ten obiekt jest Przedmiot człowieczeństwa, a także instancja człowieczeństwa . Tutaj wydaje się, że obiekty i instancja są synonimami, powtórzę, że nie są synonimami
Wznówmy naszą historię, stworzyliśmy naszego pierwszego Człowieka, teraz możemy zapytać o jego imię, wiek, wzrost, wagę, tak to robimy w Javie
class Birth{
public static void main(String [] args){
HumanBeing firstHuman = new HumanBeing("Adam",25,6.2,90);
System.out.println(firstHuman.getName());
System.out.println(firstHuman.getAge());
...
...
}
}
więc mamy pierwszego człowieka i przesuńmy pióro, nadając naszemu pierwszemu człowiekowi jakąś kwalifikację, zróbmy go Doktorem, więc potrzebujemy kategorii o nazwie Doktor i dajmy naszemu Doktorowi pewne zachowanie, więc w Javie postępujemy w następujący sposób
class Doctor extends HumanBeing{
public Doctor(String Name,int Age,float Height,float Weight){
super(Name,Age,Height,Weight);
}
public void doOperation(){
/* Do some Operation*/
}
public void doConsultation(){
/* Do so Consultation*/
}
}
Tutaj użyliśmy koncepcji dziedziczenia, która wprowadza w kodzie pewną możliwość ponownego wykorzystania, każdy lekarz zawsze będzie człowiekiem, będąc pierwszym, więc lekarz będzie miał Imię, wiek, wagę, wzrost, które zostaną odziedziczone po Człowieku, zamiast pisać je ponownie, zwróć uwagę, że właśnie napisaliśmy opis lekarza, którego jeszcze nie stworzyliśmy, więc stwórzmy Doktora w naszymclass Birth
class Birth{
public static void main(String [] args){
Doctor firstDoctor = new Doctor("Strange",40,6,80);
.......
.......
/*Assume some method calls , use of behaviour*/
.......
.......
}
}
Przypadek 2: Obiekt i instancja nie są synonimami
W powyższym kodzie możemy wyobrazić sobie, że tworzymy instancję naszej kategorii Doktor i ożywamy ją tj. Po prostu tworzymy obiekt kategorii Doktor , Jak już wiemy Obiekty są tworzone w pamięci sterty i firstDoctor
zawiera odniesienie do tego obiektu na stercie;
Ten konkretny obiekt firstDoctor
jest następujący (należy pamiętać, że firstDoctor
zawiera odniesienie do obiektu, nie jest to sam obiekt)
firstDoctor
jest przedmiotemclass Doctor
i instancją Aclass Doctor
firstDoctor
to nie przedmiotclass HumanBeing
Ale instancjiclass HumanBeing
Zatem określony Object może być instancją określonej klasy, ale nie musi być obiektem tej danej klasy
Wniosek:
O obiekcie mówi się, że jest Instancją określonej kategorii, jeśli spełnia wszystkie cechy tej konkretnej kategorii
Przykład z prawdziwego świata będzie następujący: po raz pierwszy rodzimy się jako ludzie, więc wyobraź sobie nas jako obiekt człowieka, teraz, gdy dorastamy, podejmujemy obowiązki i uczymy się nowych umiejętności oraz odgrywamy różne role w życiu. Przykład Syn, brat, córka, ojciec Matko teraz Czym właściwie jesteśmy? Możemy powiedzieć, że jesteśmy obiektami człowieka, ale przykładami brata, córki, ... itd.
mam nadzieję, że to pomoże
Dziękuję Ci