Klassen und Pakete

Status
Nicht offen für weitere Antworten.
L

Lazarus1

Gast
Also ich kappier eine Sache nicht so richtig. Die Vererbung ist mir eigentlich klar. Klassen von Klassen ableiten und um Eigenschaften und Methoden erweitern. So bau ich mir ne Klasse, die ich von JFrame ableite um die Eigenschafen und Methoden nutzen zu könne. Auch alles schon gemacht.

Nun wie ist das mit den Importanweisungen. Ich importiere ja allerlei Klassen. Und schwups kann ich diverse Methoden aus diesen Klassen in meinem Programm benutzen, obwohl ich meine public class Frame1 nur von JFrame abgeleitet habe. Wie kommt das? Ist das mit dem extend nur eine Konvention und wird mit der Importanweisung automatisch meine Klasse um die Eigenschaften und Methoden der importierten Pakete und derer Klassen erweitert?

Im Voraus schon mal Danke

Cu[/code]
 

mic_checker

Top Contributor
Mit der Vererbung ist es so:

Code:
class A
{
...
}

class B extends A
{
...
}

Die Klasse B erbt alle Methoden und Attribute der Klasse A. Im Generellen kann man sagen, dass Vererbung v.a. dann sinnvoll ist wenn eine sogenannte "ist ein" Beziehung besteht.

Beispiel:

Du hast allgemein eine Figur. Zudem hast du zwei geometrische Figuren wie z.B. nen Kreis und ein Rechteck.
Nun kannst du sagen: Ein Kreis ist eine Figur u. Ein Rechteck ist eine Figur.
Die Klassen Rechteck u. Kreis können von Figur erben und diese um spezifische Attribute / Methoden erweitern.

Rechteck u. Kreis sind dann sog. Subklassen , während Figur dann die Superklasse ist.


Mit den import Anweisungen verhält es sich etwas anders.
Zum einen ersparst du dir dadurch etwas Arbeit. Siehe

Code:
import java.util.*;
...
ArrayList al = new ArrayList();

Anstatt

Code:
java.util.ArrayList al = new java.util.ArrayList();

Welchen Sinn hat das ganze? Wenn du best. Klassen importierst dann erbt deine Klasse nicht alle Attribute und Methoden (das würde ja heissen das es um diese erweitert werden würde), sondern du hast von deiner Klasse aus lediglich Zugriff auf die Methoden dieser Klassen.

Hoffe das wurde einigermaßen klar, ansonsten poste.
 
L

Lazarus1

Gast
Bei der Vererbung kann ich auf Objekte der erbenden Klasse alle Methoden anwenden. Bei der import Anweisung kann ich lediglich Objekte anderer Klassen erschaffen und deren Methoden auf die instanzierten Objekte anwenden, nicht auf ein Objekt der von mir erschaffenen Klasse.???

Und falls noch jemand weiß wie man im JBuilder XFoundation ein Bild in ein JFrame bzw. dessen contentPane ladt wär ich richtig glücklich. Wenn ich z.B. folgende Sytax angebe wie sie auch in diversen Büchern steht. Kommt nichts. Beim Debuggen wird aber angezeigt, daß das Bild geladen wurde. Also muß da irgend was mit der draw Methode sein??? Hat sich da irgendwas in dieser Version geändert?


Code:
     public void paint(Graphics g) {

              Image pic = Toolkit.getDefaultToolkit().getImage("bicho.gif" );

                g.drawImage(pic, 100, 100,jPanel1);

    }

als Drittes Argument habe ich auch schon this für Frame angegeben, contentPane, und auch schon mit einem Label hab ich es versucht.



Exact so steht es in einem Buch. Nur bei mir kommt da nöscht
Code:
public void paint(Graphics g)
{
  Image img;
   img = getToolkit().getImage("duke.gif");
  g.drawImage(img,40,40,this);
}

Für einige Tips wär ich dankbar. Ach ja zum Teufel mit der Umschulung! Verkaterte Dozenten wissen sowas sowieso nicht!!!!

Grüße Lazarus1
 

mic_checker

Top Contributor
Lazarus1 hat gesagt.:
Bei der Vererbung kann ich auf Objekte der erbenden Klasse alle Methoden anwenden. Bei der import Anweisung kann ich lediglich Objekte anderer Klassen erschaffen und deren Methoden auf die instanzierten Objekte anwenden, nicht auf ein Objekt der von mir erschaffenen Klasse.???

Code:
class B extends A
{
..
}

Mit dieser Anweisung erweiterst du die Klasse A um eine best. Funktionalität. Alle Methoden u. Attribute von A werden an B vererbt. Nun kannst du in B zusätzlich zu diesen Methoden noch weitere Methoden implementieren , bzw. weitere Attribute deklarieren.
Somit kannst du auf Objekte der erbenden Klasse alle Methoden der Superklasse anwenden (in diesem Fall der Klasse A).

Code:
import java.util.*;

class C
{
....
ArrayList al = new ArrayList();
...
BitSet bs = new BitSet();

// etc. pp.
}

In der Klasse C hast du Zugriff auf die Klassen die in java.util enthalten sind , z.B. ArrayList, BitSet etc. (was genau diese Klasse machen brauchst du an dieser Stelle nicht zu wissen).
So könntest du z.B. einer ArrayList (Verketteten Liste) Objekte vom Typ B (Klasse von eben) übergeben, also Verkettete Listen anlegen, die als Elemente Objekte deiner Klasse B enthalten.


Und falls noch jemand weiß wie man im JBuilder XFoundation ein Bild in ein JFrame bzw. dessen contentPane ladt wär ich richtig glücklich. Wenn ich z.B. folgende Sytax angebe wie sie auch in diversen Büchern steht. Kommt nichts. Beim Debuggen wird aber angezeigt, daß das Bild geladen wurde. Also muß da irgend was mit der draw Methode sein??? Hat sich da irgendwas in dieser Version geändert?

Schon mal Suchfunktion verwendet? Findest da bestimmt was...


Btw. Schau mal im Unter-Forum "OOP" nach, dort stehen mit SIcherheit einige hilfreiche Threads zum Thema Vererbung etc.
 

mic_checker

Top Contributor
super() kannst du dazu benutzen um Methoden u. den Konstruktor aus der Superklasse aufzurufen, bzw. auf die Attribute der Superklasse zuzugreifen (falls erlaubt Stichwort: Sichtbarkeitsbereich).

Code:
class A
{
	private int num;
	String name = "A";
	
	A()
	{
		this(0,"");
	}
	
	A(int num,String name)
	{
		this.num = num;
		this.name = name;
	}
	
	public int getNum()
	{
		return this.num;
	}
	
	public void setNum(int num)
	{
		this.num = num;
	}
	
	public String toString()
	{
		return "BlaBla";
	}
}

class B extends A
{
	String name = "B";
	
	B()
	{
		super(1,"B");
	}
	
	public int getNum()
	{
		return super.getNum();
	}
	
	public String toString()
	{
		return super.toString() + " Klasse B ";
	}
}

//dient als Testklasse
class C
{
	public static void main(String[] args)
	{
		B test = new B();
		System.out.println(test);
		
		System.out.println("Name = "+test.name);
		System.out.println("Num = "+test.getNum());
	}
}

Als Ausgabe solltest du erhalten:

BlaBla Klasse B
Name = B
Num = 1

Was soll das Beispiel zeigen?

Mit super.Methodenname() kannst du auf Methoden in der Superklasse zugreifen. Wenn du im Konstruktor bist kannst du mit super(...) den Konstruktor der Superklasse aufrufen (dabei muss super(..) die erste Anweisung in deinem Konstruktor sein).
Mit super.Attributname kannst du auf Attribute der Superklasse zugreifen, allerdings musst du dir spezielle Zugriffsmethoden schreiben (in diesem Fall in Klasse A getNum() u. setNum()) um auf Variablen zuzugreifen, falls sie als private deklariert sind.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
MQue Daten-Austausch zwischen Klassen verschiedener Pakete Allgemeine Java-Themen 5
K Design: Klassen in Pakete aufteilen - Eure Meinung Allgemeine Java-Themen 8
I Mehrere Klassen mit den selben Daten Allgemeine Java-Themen 5
Zrebna Wie ermittelt man alle testbaren (zu testenden) Klassen in seinem Maven-Projekt? Allgemeine Java-Themen 23
8u3631984 Jacoco Testcoverage bei Abstracten Klassen in verschachtelten Modulen Allgemeine Java-Themen 6
Encera Gleichzeitiges Ausführen und verbinden von 2 Java-Klassen über die Eingabeaufforderung und Eclipse Allgemeine Java-Themen 21
8u3631984 Problem beim Mocken von Record Klassen Allgemeine Java-Themen 4
B Ein Objekt einer Klasse mehreren anderen Klassen zur Verfügung stellen? Allgemeine Java-Themen 6
B Java Reflection Probleme beim wehcselseitigen Referenzieren zweier Klassen/Objekte Allgemeine Java-Themen 14
P9cman java.Lang Klassen fehlen in JRE System Library Allgemeine Java-Themen 1
B Wie kann ich mein 8 Klassen Gebilde objektorientierter schreiben? Allgemeine Java-Themen 114
N abstracte klassen methoden Allgemeine Java-Themen 32
W Klassen Zugriff auf ein Textfile aus allen Klassen. Allgemeine Java-Themen 2
M Klasse durch Klassen Aufteilung verbessern, aber wo? Allgemeine Java-Themen 1
stormyark Problem beim Klassen erstellen Allgemeine Java-Themen 1
M Kann man Annotationen auf Klassen einschränken die ein Interface implementieren? Allgemeine Java-Themen 1
nonickatall Methoden Kann man Klassen/Methoden aus Variablen heraus aufrufen? Allgemeine Java-Themen 6
H Interface PluginSystem ClassNotFound exception für library Klassen Allgemeine Java-Themen 10
L Classpath Zur Laufzeit bestimmte Klassen in Classloader hinzufügen? Allgemeine Java-Themen 4
P Abstrakte Klassen vs. Interface Allgemeine Java-Themen 4
I Klassen aus Jar-Dateien aus anderem Ordner laden Allgemeine Java-Themen 3
D OOP Gemeinsamen ID-Raum für zwei Klassen implementieren Allgemeine Java-Themen 7
B Problem mit meinen Klassen Allgemeine Java-Themen 6
I Array Parameter mit 2 Klassen - NullPointerException Allgemeine Java-Themen 3
F ArrayList`s in Klassen mit Getter/Setter Allgemeine Java-Themen 8
F Code in Klassen bringen Allgemeine Java-Themen 4
J Problem beim Generischen Klassen und Interfaces Allgemeine Java-Themen 2
F Klassen Verwendung abstrakter Klassen Allgemeine Java-Themen 9
W Variablenübergabe über mehrere Klassen Allgemeine Java-Themen 4
B Vererbung Interface und implementierende Klassen Allgemeine Java-Themen 8
D Klassen JLabels in anderen Klassen verwenden. Allgemeine Java-Themen 7
H Klassen LibGDX - Verschiedene Klassen als Value in einer Map Allgemeine Java-Themen 8
J Best Practice Objekt an alle Klassen verteilen ( Discord Bot ) Allgemeine Java-Themen 7
A Anonyme Klassen - Interface Allgemeine Java-Themen 5
ReinerCoder auf Klassen innerhalb eines package zugreifen Allgemeine Java-Themen 22
J Tetris Probleme bei Klassen Allgemeine Java-Themen 14
cool_brivk24 Klassen Klassen Aufruf Fehlgeschlagen Allgemeine Java-Themen 14
S Parametrisierte jUnit 5-Tests mit eigenen Datentypen/Klassen-Objekten als Test-Parameter Allgemeine Java-Themen 0
rentasad Design-Frage - Interfaces, Klassen, statische Methoden Allgemeine Java-Themen 3
S Klassen Abstrakte Klassen Allgemeine Java-Themen 5
T Log4J - Deaktivierung für einzelne Klassen Allgemeine Java-Themen 7
Tommy Nightmare Klassen Globale Klassen erstellen Allgemeine Java-Themen 7
X Klassen aus jar in jar Laden Allgemeine Java-Themen 1
S Klassen Klassen "virtuell" erstellen Allgemeine Java-Themen 5
J Aus mehreren Klassen ein Datei ausführbare machen Allgemeine Java-Themen 6
S equals-Methode bestimmer Klassen abfangen Allgemeine Java-Themen 2
M Klassen Eine Klasse in mehreren Klassen einbinden Allgemeine Java-Themen 11
Sin137 Struktur der Klassen & Package Allgemeine Java-Themen 2
G Klassen und interne Klassen Allgemeine Java-Themen 1
S Klassen übergeben Allgemeine Java-Themen 13
C Klassen und Konstruktor Allgemeine Java-Themen 2
S Classpath Wie kann ich Java-Library Klassen "verstecken"..? Allgemeine Java-Themen 4
A Java speech - 2 Klassen Allgemeine Java-Themen 1
V Wie kann ich die Fragen mit den anderen Klassen verbinden? Allgemeine Java-Themen 1
T Schlüsselworte mehrere public-Klassen in einem Paket Allgemeine Java-Themen 7
V Klassenname von allen Klassen mit einer bestimmten Eigenschaft bekommen Allgemeine Java-Themen 2
B Classpath Eclipse findet importierte Klassen nicht Allgemeine Java-Themen 1
C DBConnection als Methode in mehreren Klassen Allgemeine Java-Themen 4
C Arten von Klassen Allgemeine Java-Themen 3
7 Verbinden von Mehreren Klassen Allgemeine Java-Themen 29
A Klassen ein Interface aufzwingen Allgemeine Java-Themen 4
O Java-Obfuscator, welcher einzelne Methoden, Klassen und Ordnerstrukturen ausnehmen kann. Allgemeine Java-Themen 1
A also definition von klassen und string methoden und algorithmik Allgemeine Java-Themen 13
D Problem bei Vererbung abstrakter Klassen Allgemeine Java-Themen 6
M Interface Generische Klassen mit mehreren Typen überschreiben Allgemeine Java-Themen 0
L OOP Klassen-Design (static oder nicht?) Allgemeine Java-Themen 3
X Eigene Annotation - mit Bedingung für ganze Klassen oder Methoden Allgemeine Java-Themen 2
O Klassen Programm in Klassen unterteilt, werte werden nicht mehr übernommen Allgemeine Java-Themen 3
J C++ Projekt (QT) in Java mit Klassen (nicht imperativ) nutzen (BridJ? JavaCPP? SWIG? JNA? JNI?) Allgemeine Java-Themen 2
T Datentypen Eine Liste - verschiedenen Klassen - eine Abstracte Klasse Allgemeine Java-Themen 3
S .jar hat nicht alle Klassen ??? Allgemeine Java-Themen 10
S Polymorphie Polymorphismus bei Abstrakten Klassen Allgemeine Java-Themen 2
S Tool um mehrere Klassen in einer Klasse vereinen? Allgemeine Java-Themen 6
T Wie kann ich alle existierenden Java-Klassen anzeigen lassen? Allgemeine Java-Themen 10
Landei Welche Klassen fehlen im JDK? Allgemeine Java-Themen 18
S Kapselung Statische Helper Klassen Allgemeine Java-Themen 5
A Vererbung Klassen-Downcasting wirft ClassCastException Allgemeine Java-Themen 2
N Java Klassen mit ID Allgemeine Java-Themen 21
antonbracke Klassen Klassen gegenseitig laden Allgemeine Java-Themen 4
R SecurityManager für einzelne Klassen/Threads? Allgemeine Java-Themen 38
T Java Klassen aus externer .jar laden und ausführen Allgemeine Java-Themen 3
S JPA und Entity-Klassen: Wert ungültig Allgemeine Java-Themen 6
M OO / Klassen / Projektstruktur Allgemeine Java-Themen 5
O Klassen werden nicht importiert Allgemeine Java-Themen 3
E selber Klassen kompilieren/ prüfen Allgemeine Java-Themen 5
Z Abstrakte Klassen /Interface Allgemeine Java-Themen 5
A Klassen und JLabel's Allgemeine Java-Themen 12
J Java-Implementierung diverser Beziehungen zwischen Klassen bzw. Objekten Allgemeine Java-Themen 2
M Methoden/Klassen für andere Projekte Allgemeine Java-Themen 4
J Suche: Tool zum Auffinden gleichnamiger Klassen (Name und Package gleich) in unteschiedlichen JARs Allgemeine Java-Themen 5
E instanceof mit nicht öffentlichen Klassen Allgemeine Java-Themen 2
D Datentypen Typbestimmung unbekannter Wrapper-Klassen Allgemeine Java-Themen 5
S Klassen in einer Schleife durchlaufen Allgemeine Java-Themen 11
X Generic muss zwei Klassen/Interfaces erfüllen Allgemeine Java-Themen 5
N Vergleich eigener Klassen Allgemeine Java-Themen 5
M Klassen Array aus Klassen bestimmter Klassen ? Allgemeine Java-Themen 11
C OOP Klassen mit "Eigenschaften" Allgemeine Java-Themen 10
H Klassen kommunizieren lassen Allgemeine Java-Themen 3
A Problem bei Serialisierung von Bibliotheks-Klassen Allgemeine Java-Themen 6
R Implementierung eines Interface durch 2 verschiedene Klassen Allgemeine Java-Themen 6

Ähnliche Java Themen


Oben