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, 343 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: decathlon
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. ...

Visual Studio
Aufrufe von Klassen untereinander
gelöst Frage von MarcoBornVisual Studio7 Kommentare

Hallo Forum, in meinem Projekt habe ich folgendes Konstrukt: Eine Klasse "Import" besitzt eine Funktion "StatusfensterNeu", die ein Formular ...

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 ...

JavaScript

JQuery, neue Klasse an vorhandene Klasse hängen.

gelöst Frage von d4shoerncheNJavaScript4 Kommentare

Guten Tag, ich erstelle gerade eine neue Webpräsenz für unseren Verein und setze dort Joomla ein. In Joomla bekommt ...

Neue Wissensbeiträge
Windows Server

Scheduled Task zum Log - Löschen direkt aus der SCOM Console

Tipp von Juanito vor 1 StundeWindows Server

SCOM Agent Task - Create Log Deletion Job Einleitung: Viele Applikationen und Dienste die auf Servern laufen erstellen Log ...

Humor (lol)

Ratgeber: Die wichtigsten Fragen und Antworten zur neuen Datenschutz-Grundverordnung (DSGVO)

Information von BassFishFox vor 1 StundeHumor (lol)

Hier bleiben keine Fragen offen. ;-)

Humor (lol)
Wieder mal DSGVO
Information von brammer vor 13 StundenHumor (lol)2 Kommentare

Mal was zum Lachen: Der Countdown zur Datenschutz-Grundverordnung läuft. Ab 25. Mai sollte man folgende Regeln beachten: Visitenkarten nur ...

Router & Routing

Cisco Talos deckt riesiges Router- und NAS-Botnetz auf

Tipp von Bosnigel vor 13 StundenRouter & Routing

Anscheinend kommt da wieder was auf uns zu: Gruß Bosnigel

Heiß diskutierte Inhalte
LAN, WAN, Wireless
Powerline über zwei Stockwerke optimieren
gelöst Frage von DultusLAN, WAN, Wireless45 Kommentare

Guten Morgen liebes Forum, ich hätte einmal eine Frage bezüglich Powerline Adapter: Mein Problem ist seit gestern präsent, da ...

HTML
Link nicht vollständig
Frage von jensgebkenHTML32 Kommentare

Hallo Gemeinschaft, ich erstelle mit Word einen Serienbrief, den ich per Mail versende. Nun mein Problem der Wordserienbrief holt ...

Datenschutz
E-Mail Verschlüsselung DSGVO 2018
Frage von SoccerdeluxDatenschutz27 Kommentare

Hallo zusammen, ich verzweifele langsam und wende mich an euch und hoffe vielleicht ein paar Antworten zu finden. Ich ...

Rechtliche Fragen
DISKUSSION: Was bringt der Disclaimer "Wenn Sie nicht der Empfänger sind."
Frage von N8DragonRechtliche Fragen23 Kommentare

So oder ähnlich, lese ich immer wieder Kleingedrucktes am Ende diverser Mails. Letzten Endes wollen sie mir alle sagen, ...