Hmmm, klasa publiczna a klasa statyczna to różne sobie pojęcia.
Klasa może być statyczna czyli taka z ktorej nie możesz stworzyć obiektu lub dynamiczna => tworzysz najpierw klasę a później na jej podstawie jeden lub wiele obiektów.
Jeśli chodzi o klasę publiczną to chodzi tutaj poziom dostępu do niej. To wszystko to nie są tematy żeby dobrze wytłumaczyć w krótkim poście ale tak na szybko:
Publiczna - dostępna dla innych klas, nawet jeśli jest w innym assembly, wystarczy że masz do niego referencje i możesz tworzyć obiekty gdzie chcesz i kiedy chcesz.
Internal - zachowuje się podobnie jak publiczna ale tylko w obrębie jednego assembly. Jeśli mam np project1.dll I project2.dll jeśli klasa internal siedzi w project2.dll jest klasa publiczna dla tej dll - niedostępna dla project1.dll
Protected - dostępna dla klas dziedziczacych
Private - jak sama nazwa wskazuje...
Pozdrawiam