Zugriffsmodifikatoren-wie kann man das genau in der Programmiersprache erklären mittels Public private Protected und internal?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Das kann man in der Programmiersprache erklären, indem man public/protected/private/internal vor die Methode bzw. die Property bzw. die Klasse schreibt, von der man die Sichtbarkeit ändern will. 

Wenn du mal genauer erklären würdest, was du nicht verstanden hast, könnte man dir sicherlich besser helfen.

Das genau Ziel solcher Modifikatoren versteh ich nicht . Es heißt sie bestimmt die Sichtbarkeit bestimmter Teile. Also die Notwendigkeit der Modifikatoren ist mir nicht  ganz klar

0
@nur40

In einem idealen objektorientierten Programm kennt eine Klasse von jeder anderen Klasse, mit der es zu tun hat, nur die Methoden/Properties, die es unbedingt kennen muss, um zu funktionieren. Alles andere sollte man verbergen. Auf diese Weise vermeidet man Fehler und kann einzelne Teile recht einfach austauschen/erweitern, ohne das ganze Programm neu schreiben zu müssen.

Angenommen, wir haben eine Klasse "Auto" und eine Klasse "Fahrer". Das Auto hat eine public Methode "starteAuto()", welche prüft, ob der Schlüssel eingesteckt ist und danach ggf. die private Methode "fahre()" startet. Es wäre fatal, wenn jeder Fahrer einfach so die private Methode "fahre()" aufrufen könnte und damit die Schlüssel-Überprüfung übergehen könnte. Deswegen geht es den Fahrer nix an, dass es eine Methode "fahre()" gibt, wenn er das Auto starten will, dann muss er "starteAuto()" aufrufen und den Schlüssel übergeben.

Protected: Wir haben eine "Fahrzeug"-klasse, die eine Methode "beschleunigen()" hat. Wenn wir jetzt von "Fahrzeug" eine Subklasse" namens "Auto" ableiten, dann kann auch "Auto" auf "beschleunigen()" zugreifen. Nach außen geht es niemanden was an, dass es "beschleunigen()" gibt... "beschleunigen()" ist eher Bestandteil der "fahre()"-Methode von oben. Internal wäre ähnlich, nur dass die Sichtbarkeit nicht zwischen vererbten Klassen, sondern innerhalb einer Assembly ist.

0

Vielen Dank. Deine Antwort hat mir sehr geholfen

0

Wie könnte man Ihren Beispiel von Protected in der c#-Programmierung ?
Also würde man so Anfangen:
Public class Fahrzeug
{
  Methode "beschleunigen()"
}

Oder wie macht man das ?

0

Ist "Object" ein Datentyp?

private Object l,r;

public zahlen (Object l, Object r)

public Object getL() {
return l;}

...zur Frage

Sinn von Typ-Parametern?

z.B.

public class Paar<T>
{

private T l, r;

}

...zur Frage

Gibt es ein Unterschied zwischen den Zugriffsmodifikatoren zwischen Java und C# also in Bezug auf private/protected/internal und public?

...zur Frage

BlueJ Programmierfehler NaN?

Aufgabe: BMI Rechner programmieren. Nun wird mir allerdings als Idealgewicht in der Anzeige von Waage() immer NaN als Lösung gegeben. Ist irgendwo ein Fehler in den Gleichungen? Syntaxfehler sind nicht drin und ich hab echt keinen Plan mehr.

Danke schon mal an die lieben Informatik Freaks, die sich den Quelltext überhaupt durchlesen ^^ MfG der, die, das Rebel of Berlin

public class waage {

private double gewicht;
private double groesse;
private double idealgewicht;
private double groesseZumQuadrat;

public waage()
{
   gewicht = 0;
   groesse = 0;
   idealgewicht = 0;
   groesseZumQuadrat = 0;
}

public void anzeigen()
{
    System.out.println("gewicht: " + gewicht + "kg");
    System.out.println("groesse: " + groesse + "m");
    System.out.println("idealgewicht: " + idealgewicht + "kg");
    
    double differenz = gewicht - idealgewicht;
    System.out.println("differenz: " + differenz + "kg");
    
    if(differenz > 5)
    {
        System.out.println("Du wiegst " + differenz + " zu viel - Du bist ein kleiner Fettsack - mach' mehr Sport und iss' gesund, diggah!");
    }
    else if(differenz < 5)
    {
        System.out.println("Du wiegst " + differenz + " zu wenig - Bisschen dürr, wa? Ein Burger, 'ne Pizza oder ein Besuch bei KFC schadet Dir nicht!");
    }
    else
    {
        System.out.println("Das passt ganz gut so! Dein Lifestyle ist sicher krass!");
    }
}

public void wiegen (double gewicht)
{
    this.gewicht = gewicht;
}
public void messen (double groesse)
{
    this.groesse = groesse;
    idealgewicht();
}
private void idealgewicht()
{
    idealgewicht = gewicht / groesseZumQuadrat;
}
private void groesseZumQuadrat()
{
    groesseZumQuadrat = groesse * groesse;
}

}

...zur Frage

Wie sieht die Punktnotation in Java aus oder wie kann ich auf auf andere Klassen zugreifen?

Wie kann ich in der Klasse Telefon die Methoden aus der Klasse Telefonbuch verwenden ? Wenn ich es mit Punktnotation versuche wie z.B.

public void eintrag_hinzufuegen(String name)
{
    Telefonbuch.hinzufuegen(name);
}

, kommt die Fehlermeldung : non static method cannot be referenced from a static context

1)

import java.util.ArrayList;
public class Telefon
{
protected ArrayList <Telefonbuch> telefonbuch;
protected boolean eingeschaltet;
        
        public Telefon()
    {
        // initialise instance variables
        telefonbuch = new ArrayList <Telefonbuch>();
    }
    
    public void anrufen (String name)
    {
    }
    
    public void einschalten()
    {
        eingeschaltet = true;
    }
    
    public void telefonbuch_uebersicht()
    {
        
    }
    
    public void eintrag_hinzufuegen(String name)
    {
    }
    
    public void eintrag_entfernen(String name)
    {
    }
    
    public boolean eintrag_suchen(String name)
    {
    }
}

2)

import java.util.Arrays;

/**
 * Write a description of class Telefonbuch here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Telefonbuch
{
    // instance variables - replace the example below with your own
    private int anzahl_eintrag;
    private int kapazitaet;
    private String[] name_liste;
    protected boolean gefunden;

    /**
     * Constructor for objects of class Telefonbuch
     */
    public Telefonbuch()
    {
        // initialise instance variables
        String [] name_liste = new String[kapazitaet];
        gefunden = false;
    }
    
    public void set_kapazitaet(int x)
    {
        kapazitaet = x;
    }
    
    public void telefonbuch_uebersicht()
    {
        for(int i=0; i < name_liste.length; i++)
        {
        System.out.println(name_liste[i]);
        }
    }
    
    public void hinzufuegen(String name)
    {
        
    }
    
    public void entfernen(String name)
    {
    }
    
    public boolean suchen(String name)
    {
        for(int i=0; i < name_liste.length; i++)
        {
         if(name_liste[i].equals(name))
         {
         gefunden = true;
         }
         else
         {
         //Abbruch
         }
        }
        return gefunden;
    }
}

...zur Frage

BlueJ/Java wie funktioniert das?

Haben in der schule angefangen mit blueJ und der Programmiersprache java zu programmieren. Kann mir jmd dabei helfen Blick nicht wirklich durch also wann verwendet man dieses private und wann dieses public etc

...zur Frage

Was möchtest Du wissen?