Musisz zrozumieć różnicę między klasą a instancją tej klasy. Jeśli zobaczysz samochód na ulicy, natychmiast wiesz, że to samochód, nawet jeśli nie możesz zobaczyć, który model lub typ. Jest tak, ponieważ porównujesz to, co widzisz z klasą „samochód”. Klasa zawiera podobne do wszystkich samochodów. Potraktuj to jako szablon lub pomysł.
Jednocześnie samochód, który widzisz, jest przykładem klasy „samochód”, ponieważ ma wszystkie właściwości, których się spodziewasz: ktoś jeździ, ma silnik, koła.
Tak więc klasa mówi „wszystkie samochody mają kolor”, a instancja mówi „ten konkretny samochód jest czerwony”.
W świecie OO definiujesz klasę, a wewnątrz klasy definiujesz pole typu Color
. Po utworzeniu instancji klasy (podczas tworzenia określonej instancji) pamięć jest zarezerwowana dla koloru i można nadać tej konkretnej instancji kolor. Ponieważ te atrybuty są specyficzne, nie są one statyczne.
Pola i metody statyczne są wspólne dla wszystkich instancji. Są to wartości specyficzne dla klasy, a nie konkretna instancja. W przypadku metod są to zwykle globalne metody pomocnicze (jak Integer.parseInt()
). W przypadku pól są to zwykle stałe (np. Typy samochodów, tj. Coś, co ma ograniczony zestaw, który nie zmienia się często).
Aby rozwiązać problem, musisz utworzyć instancję (utworzyć obiekt) swojej klasy, aby środowisko wykonawcze mogło zarezerwować pamięć dla instancji (w przeciwnym razie różne instancje zastąpiłyby się nawzajem, czego nie chcesz).
W twoim przypadku wypróbuj ten kod jako blok początkowy:
public static void main (String[] args)
{
try
{
MyProgram7 obj = new MyProgram7 ();
obj.run (args);
}
catch (Exception e)
{
e.printStackTrace ();
}
}
// instance variables here
public void run (String[] args) throws Exception
{
// put your code here
}
Nowa main()
metoda tworzy instancję klasy, którą zawiera (brzmi dziwnie, ale ponieważ main()
została utworzona z klasą zamiast z instancją, może to zrobić), a następnie wywołuje metodę instancji ( run()
).
C
. Ale to nie będzie zbyt dobre. Spróbuj użyć Java w sposób, w jaki ma być używany, jako język obiektowy.