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

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

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

Neue Wissensbeiträge
Backup

2016 - Restore mit WBAdmin - iSCSI Device als Sicherungsziel

Erfahrungsbericht von Henere vor 1 TagBackup1 Kommentar

Servus zusammen, was mich eben einige graue Haare gekostet hat Server 2016. Ich habe meinem Server eine weitere M2 ...

Humor (lol)
(Part num your Hacked phone. +XX XXXXXX5200)
Erfahrungsbericht von Henere vor 3 TagenHumor (lol)7 Kommentare

Mein Handy hat aber ne ganz andere Endnummer. Muss ich mir jetzt Sorgen machen ? :-) Vielleicht betrifft es ...

Exchange Server

Letztes Update für Exchange 2016 CU9 war in gewisser Weise destruktiv

Erfahrungsbericht von DerWoWusste vor 3 TagenExchange Server9 Kommentare

Kurzer Erfahrungsbericht zu Exchange2016-KB4340731-x64 Der Exchangeserver hat wie gewöhnlich versucht, es in der Nacht automatisch zu installieren - abgesehen ...

Erkennung und -Abwehr

Neue Sicherheitslücke Foreshadow (L1TF) gefährdet fast alle Intel-Prozessoren

Information von Frank vor 4 TagenErkennung und -Abwehr3 Kommentare

Eine neue Sicherheitslücke, genannt Foreshadow (alias L1TF) wurde auf der Usenix Security 18 von einem Team internationaler Experten veröffentlicht. ...

Heiß diskutierte Inhalte
E-Mail
Deutsche e-Mail Adresse auf iPhone in Katar. Nur Probleme
Frage von vanTastE-Mail15 Kommentare

Moin, ich habe hier in Deutschland auf einem Exchange 2013 eine e-Mail Adresse (name@domain.de) für einen Kollegen in Katar ...

Windows Server
Server 2016 Autotiering Storage Space
Frage von HenereWindows Server11 Kommentare

Servus, ich habe jetzt ein StorageSpace auf einem Server 2016 in Betrieb zum Testen. 1x M2 mit 512GB (970pro) ...

Netzwerke
SSH - Wieso werde ich nach VPN Verbindung rausgeschmissen?
Frage von VernoxVernaxNetzwerke10 Kommentare

Hallo, ich habe es endlich geschafft mein Handy mit einer VPN Verbindung an meinen Router anzuschließen. Nach der Login ...

Hyper-V
Hyper-V keinen Zugriff auf USB Gerät über USB Server
Frage von Barns83Hyper-V10 Kommentare

Normal bin ich ein stiller Leser und wühle mich im normal Fall durch Foren oder schau durch meine Bücher. ...