Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Methode einer Klasse in einer Klasse aufrufen

Mitglied: tomaschku

tomaschku (Level 1) - Jetzt verbinden

13.05.2018, aktualisiert 16.05.2018, 850 Aufrufe, 5 Kommentare

Hallo Leute!

Heut habe ich mal wieder ein Problem:
Ich habe in der Klasse "Haupt" eine reset() Funktion, die die reset() Funktionen der untergeordneten Klasse "starter" ausführen soll:

01.
public class Haupt { 
02.
  Haupt() { 
03.
    xyz = 0; 
04.
  }; 
05.
   
06.
  public class starter { 
07.
    starter() { 
08.
      ex = 0; 
09.
    }; 
10.
    public void setEX(int _in) { ex= _in; }; 
11.
    public int getEX() { return ex; }; 
12.
    public void reset() { 
13.
      ex= 0; 
14.
    };   
15.
    private int ex; 
16.
  }; 
17.
 
18.
  public void setXYZ(int _in) { xyz = _in; }; 
19.
  public int getXYZ() { return xyz; }; 
20.
  public void reset() { 
21.
    xyz = 0; 
22.
    starter.reset(); 
23.
  };   
24.
  private int xyz; 
25.
};
Doch es möchte nicht funktionieren (NullPointerException beim Aufruf der Funktion). Da ich Java noch nicht lange benutze und auch durch googeln nichts brauchbares rauskam, weiß ich jetzt nicht mehr weiter.
Welche Regel habe ich missachtet?

EDIT:
Man kann natürlich "starter" außerhalb von "Haupt" verschieben und dann in Haupt einfach
01.
starter Starter;
schreiben, aber ich sehe da 2 Probleme:
1. Die starter Klasse wäre public, was aus mehreren Gründen unpraktisch ist und
2. es wird dann auch unübersichtlich.

Mit freundlichen Grüßen
tomaschku
Mitglied: 136166
13.05.2018, aktualisiert um 15:08 Uhr
starter.reset();
Du rufst eine Funktion von einer Klasse auf von der es keine Instanz gibt. Also erst eine Instanz dieser Klasse erzeugen und dann die Funktion auf dieser Instanz aufrufen, oder eben die Klasse als static deklarieren dann ist ein direkter Aufruf dessen Member möglich.
https://stackoverflow.com/questions/7486012/static-classes-in-java?utm_m ...
Bitte warten ..
Mitglied: emeriks
13.05.2018, aktualisiert 14.05.2018
Hi,
ich kenne mich zwar nicht konkret mit Java aus. Aber ich denke, dass Du die Klasse "Starter" erst einmal instantiieren oder diese als "static" deklarieren musst.

Also entweder in Klasse "Haupt" ein
01.
  private Starter MyStarter;
einbauen und dann aufrufen über
01.
 ... 
02.
MyStarter.Reset 
03.
...
oder in Klasse "Starter"
01.
public static void reset()  
02.
.....

deklarieren. Wobei ich jetzt aber keine Ahnung habe, ob und wie sich das bei Java mit diesem "static" verhält.

E.
Bitte warten ..
Mitglied: SlainteMhath
14.05.2018 um 10:21 Uhr
Moin,

eine Static Methode geht mEn an der Stelle nicht, da die Methode "starter.reset()" mit einer private Variablen "ex" interagiert. Also muss eine Instanz her.

lg,
Slainte
Bitte warten ..
Mitglied: tomaschku
16.05.2018, aktualisiert um 18:41 Uhr
Im zweitem Beitrag des Linkes bin ich auf folgenden Code gestoßen, der aber so nicht compiliert. Bei allen statics schreibt es "static is only allowed in constant variable declerations."

01.
public final class MyStaticClass { 
02.
    private MyStaticClass () { 
03.
        myStaticMember = 1; 
04.
05.
    private static int myStaticMember; 
06.
    public static void setMyStaticMember(int val) { 
07.
        myStaticMember = val; 
08.
09.
    public static int getMyStaticMember() { 
10.
        return myStaticMember; 
11.
12.
    public static int squareMyStaticMember() { 
13.
        return myStaticMember * myStaticMember; 
14.
15.
}
Auch final bei der Klasse und private beim Konstruktor machten da keinen Unterschied.
Beim entfernen der statics compiliert es zwar, kriege aber beim Aufruf von .reset() eine NullPointerException. (Keine Instanz)
Bitte warten ..
Mitglied: SlainteMhath
LÖSUNG 17.05.2018 um 08:52 Uhr
Moin,

nochmal: "static" Methoden können nicht auf non-static Variablen/Methoden der Klasse zugreifen, da alle non-statics erst mit der Instanzierung der Klasse "entstehen". Ohne Instanzierung wird auch kein Konstruktur ausgeführt, also deine Varaible "myStaticNumber" nie mit der "1" gefüllt.

So in etwa:

01.
public final class MyStaticClass {  
02.
  public static int myStaticMember = 1; 
03.
 
04.
  public static int staticMethod(int v) {  
05.
     return MyStaticClass.myStaticMember ^ v; 
06.
07.
08.
 
09.
system.out.println(MyStaticClass.myStaticMember); 
10.
system.out.println(MyStaticClass.staticMethod(5));
Bitte warten ..
Ähnliche Inhalte
Python
Methode in einer Klasse braucht self
Frage von YanmaiPython1 Kommentar

Hallo ihr Administratoren, ich bin gerade dabei, Python zu lernen. Dabei habe ich ein Modul, was 2 Klassen beinhaltet. ...

C und C++

Powershell Methode Compare-Object als C-Sharp Methode

gelöst Frage von mayho33C und C++4 Kommentare

Hallo @ All Ich beiße wieder mal an einem Problemchen und hoffe auf eure Unterstützung Ich möchte folgendes Powershell-Scriptchen ...

C und C++

Methode multiple return values

gelöst Frage von mayho33C und C++8 Kommentare

Hallo Community, ich habe wieder mal eine Frage und hoffe auf eure KnowHow! Ich möchte eine Methode erstelle die ...

C und C++

CoMarshalInterface Klasse nicht registriert

Frage von runner-ralfC und C++2 Kommentare

Hallo alle zusammen, Ich habe ein Programm das beim Starten folgenden Fehler ausspuckt. Schwerwiegender interner Fehler: CoMarshalInterface Klasse nicht ...

Neue Wissensbeiträge
Ausbildung

Linux-Ausstieg in Niedersachsen - Windows statt Bugfix

Information von StefanKittel vor 3 TagenAusbildung35 Kommentare

Sind ja nur Steuergelder

Speicherkarten

Neuer Speicherkartentyp - zunächst nur für Huawei-Smartphones (künftig auch für Notebooks u. Tablets?)

Tipp von VGem-e vor 4 TagenSpeicherkarten5 Kommentare

Servus, als ob das "Chaos" i.S. Speicherkarten noch nicht groß genug wäre?! Evtl. kommt dieser neue Kartentyp bald auch ...

Sicherheit

Diverse D-Link-Router durch drei Schwachstellen kompromittierbar

Information von kgborn vor 5 TagenSicherheit1 Kommentar

Hat jemand D-Link-Router in Verwendung? Einige Modelle sind sicherheitstechnisch offen wie ein Scheunentor. Äußerst unschöne Sache, aber nichts neues ...

Hardware

100.000 Mikrotik-Router ungefragt von Hacker abgesichert

Information von 7Gizmo7 vor 5 TagenHardware4 Kommentare

Hallo zusammen, da hier ja öfters mal von Mikrotik gesprochen wird. Trotz Updates klafft eine Sicherheitslücke in Hundertausenden Mikrotik-Routern. ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Passwortwechsel Zeitpunkt festlegen
Frage von Looser27Windows Userverwaltung27 Kommentare

Guten Morgen liebe Kolleginnen und Kollegen, da es eine Userin in meinem Urlaub geschafft hat, sich vom AD vollständig ...

Windows Server
Probleme im AD am Außenstandort
gelöst Frage von emeriksWindows Server19 Kommentare

Hi, wir haben ein Problem mit AD und GPO am Außenstandort und ich stehe momentan mächtig auf dem Schlauch. ...

Microsoft
Netzlaufwerksordner Berechtigungen Speichern unter aus Programmen
Frage von ITler7Microsoft15 Kommentare

Moin, bin in ein neues Unternehmen eingetreten und habe die Anforderung bekommen Berechtigungen auf einige Ordner anzupassen, da bisher ...

CMS
Seltsame Joomla-Meldung auf unserer WebSite
Frage von Winfried-HHCMS14 Kommentare

Hallo in die Runde! Kennt sich jemand mit Joomla aus? Im Backend unserer WebSite lesen wir seit einiger Zeit ...