Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

De_Struktor

unregistriert

1

22.10.2013, 13:04

Wer hat alles Zugriff auf "Public" Klassen

Hallo liebe Commu,

eine Frage, die mich ein wenig beschäftigt und die ich leider naiver Weise verdrängt habe schon viel früher zu erfragen, WER kann alles eine als "Public" definierte Klasse sehen.

Ich weiss es heisst JEDER kann daraus Instanzen erzeugen, aber ich verstehe nicht wer ist JEDER??

Tut mir leid, mit Sicherheit eine ziemlich dämliche Frage, lediglich habe ich das immer auf die leichte Schulter genommen und irgendwie einfach hingenommen.

Deswegen wäre ich euch sehr dankbar, über einige erklärende Antworten.

Bitte erspart euch Antworten wie: "Wie kann man das jetzt nicht wissen" etc... wie dämlich....


Mit freundlichen Grüßen

De_Struktor

drz

Frischling

  • Private Nachricht senden

2

22.10.2013, 13:13

Jeder ist dem dem Fall wohl jede andere Klasse / Ort in deiner Source. Du kannst auf öffentliche Methoden/Variablen einer Klasse von überall in deinem Quellcode zugreifen, wenn Sie denn bekannt gemacht wurden.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

3

22.10.2013, 13:15

Du hast zwar nicht gesagt, auf welche Sprache du dich beziehst, aber ich gehe mal von C++ aus.
Mit "jeder" ist hier natürlich keine Person gemeint, sondern Funktionen und Methoden anderer Klassen. Man kann eine als public definierte Klasse von überall aus sehen.

Hier mal ein Beispiel für eine private innere Klasse:

C-/C++-Quelltext

1
2
3
4
5
6
7
class Outer
{
private:
    class Inner
    {
    };
};

Die Klasse Inner kann jetzt nur innerhalb von Outer genutzt werden.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

4

22.10.2013, 13:17

Im Fall von Java oder C# gilt hier allerdings tatsächlich jeder auch als Person.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

De_Struktor

unregistriert

5

22.10.2013, 13:20

Ups sry^^ C#

Aber wenn ich meine Klasse ohne Public mache: also einfach nur

C#-Quelltext

1
2
3
4
5
class Hallo
{
   string text = "";
   MachWas()
}


Da konnte ich genau so gut, die methoden der instanz nutzen. ohen Public!!

sofern sie im gleichen Namespace sind.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

De_Struktor

unregistriert

7

22.10.2013, 13:26

Achso: Jetzt macht das ganze doch schon eher Sinn^^ Danke David

De_Struktor

unregistriert

8

22.10.2013, 13:28

Wenn ich also will, das meine Klasse später auch irgendwo wieder verwendet werden soll, dann sollte ich sie als public definieren.
Wenn ich meine, die braucht man später nicht, aus welchen Gründen auch immer, dann kann ich sie implizit als internal deklarieren.?

drz

Frischling

  • Private Nachricht senden

9

22.10.2013, 13:29

@De_Struktor

Bei mir funktioniert dein angeführtes Beispiel nicht.
Der Zugriff auf "test.Hallo.MachWas()" ist aufgrund der Sicherheitsebene nicht möglich.


C#-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
namespace test
{
    class Program
    {
        static void Main(string[] args)
        {
            Hallo mC1 = new Hallo();
            mC1.MachWas();
        }
    }

    class Hallo
    {
        string text = "";
        void MachWas()
        {

        }
    }
}

drz

Frischling

  • Private Nachricht senden

10

22.10.2013, 13:32

Wenn ich also will, das meine Klasse später auch irgendwo wieder verwendet werden soll, dann sollte ich sie als public definieren.
Wenn ich meine, die braucht man später nicht, aus welchen Gründen auch immer, dann kann ich sie implizit als internal deklarieren.?

Ich glaube die Zugriffsmodis haben weniger mit Wiederverwendbarkeit zu tun, als mehr mit Zugriffsrechten innerhalb deines Projektes.

Werbeanzeige