final und extends

A

abcde

Gast
Hallo

mich würde interessieren ob public void abcd () ausgeführt werden kann oder ob ein Fehler auftritt.

Mich verwirrt da final steht. Normalerweise werden bei Vererbungen die Methoden überschrieben aber da in der Superklasse final steht bin ich mir nicht sicher da daraus eine konstante Methode gemacht wurde.

MfG

Java:
public class auto{
public final void abcd()
}

public class bmw extends auto{
public void abcd()
}
 
G

Gast2

Gast
final bedeutet in dem Fall, dass die Methode nicht überschrieben werden kann. Nutzen kannst du die in den Unterklassen aber ohne Probleme.
 
A

abcde

Gast
Mir ist die Antwort doch bisschen unklar.

Was meinst du genau mit überschreiben.

Wenn die Methode einen Wert zurückliefern würde und Parameter hätte würde man dann die Methode überschreiben.
 
A

abcde

Gast
Das ist ja genau das was ich nicht verstehe. Bei meinem Beispiel wird die Methode aufgerufen aber da ich den Inhalt nicht sehe, wie kann ich erkennen ob die Methode überschrieben wird.

Sobald eine Methode in der Subklasse aufgerufen wird, würde ich sagen dass die Methode überschrieben wird. Aber die erste Antwort war dass die Methode nur aufgerufen wird.

Wie erkenne ich ob die Methode nur aufgerufen wird oder überschrieben wird.

Ist es richtig dass die Methode aufgerufen wird wenn sie ein void ist und überschrieben wird wenn sie alles andere als void ist.
 

faetzminator

Gesperrter Benutzer
Ist es richtig dass die Methode aufgerufen wird wenn sie ein void ist und überschrieben wird wenn sie alles andere als void ist.

Nein, das bestimmt, ob sie etwas zurück gibt oder nicht.
Java:
public class A {

    public String getName() {
        return "Franz";
    }

    public final int getSquare(int a) {
        return a * a;
    }
}
Hier kann eine Klasse X [c]getName()[/c] überschreiben. [c]getSquare()[/c] aber nicht, denn als ich [c]A[/c] implementierte, wusste ich, dass [c]getSquare()[/c] immer [c]a^2[/c] zurückgeben soll.
 
A

abcde

Gast
Ist es richtig dass die Methode nur aufgerufen wird wenn

Java:
public void abcd(){}

und überschrieben wird wenn

Java:
public void abcd(){
//steht irgendwas drinnen
}
 

Xeonkryptos

Bekanntes Mitglied
Java:
package help;

public class A {

	public void anything() {
		// mach irgendetwas
	}
	
	public final void notOverridable() {
		/* Führe Code aus, der nicht überschrieben werden kann */
	}
	
	public final int getNotOverridable(int a) {
		return a;
	}
}
Java:
package help;

public class B extends A {

	@Override
	public void anything() {
		/*
		 * der Super-Aufruf kann auch weggelassen werden und ein komplett neuer
		 * Inhalt geschrieben werden
		 */
		super.anything();
		/*
		 * Code hinzufügen, der mit dem Inhalt der in der Oberklasse definierten
		 * Methode arbeiten soll
		 */
		int a = 10 + 13;
	}

	@Override
	public final void notOverridable() {
		/*
		 * Hier bekommst du ein Fehler, da die Unterklasse die Methode nicht
		 * überschreiben darf! Es ist nicht möglich, einen neuen Inhalt in der
		 * Methode zu verfassen/implementieren
		 */
	}

	public void aufruf() {
		anything(); // Aufruf einer Methode innerhalb einer Klasse ohne Objekt
		A a = new A();
		/*
		 * Aufruf der Methode aus der Oberklasse A. Aufruf möglich,
		 * überschreiben nicht!
		 */
		a.getNotOverridable(5);
	}
}

Um es mal zu verdeutlichen hier zwei Klassen. Beide kommentiert. Sollte jetzt verständlich werden.
 

Asgar13

Bekanntes Mitglied
Ich versuche das mal mit einem Variablenbeispiel zu erklären.

Zuerst wir Methode A auf und dann Methode B.
Code:
A -> B

Durch die Methode A wird der name auf Heinz gesetzt.
Durch die Methode B würde der name auf Peter gesetzt, wenn der nicht final(unveränderbar/einmal veränderbar) wäre und nicht schon Heinz heißen würde.
Java:
private final String name;

public void A(){
name = "Heinz";
}

public void B(){
name = "Peter"; //Funktioniert nicht weil da schon etwas drin ist, was du sonst überschreiben würdest
}
 
A

abcde

Gast
Es tut mir leid ich bin immer noch verwirrt.

@Asgar
dein Bsp ist mir klar da das eine Eigenschaft ist und keine Subklasse.

Mich verwirrt bei diesem Bsp. wann es aufgerufen wird und wann es überschrieben wird.

EikeB meinte es wird nur aufgerufen.

Aber wieso wird es nur aufgerufen und nicht überschrieben.

Da BMW eine Subklasse ist wird normalerweise public void abcd(){} ausgeführt und nicht public final void abcd(){}.

Und wenn public void abcd(){} ausgeführt wird, wird für mich automatisch public final void abcd(){} überschrieben und nicht ausgeführt.

Java:
public class auto{
public final void abcd(){}
}
 
public class bmw extends auto{
public void abcd(){}
}
 
A

abcde

Gast
@Asgar

Hatte einen Fehler

@Asgar
dein Bsp ist mir klar da das eine Eigenschaft ist und keine Methode.
 

Xeonkryptos

Bekanntes Mitglied
Asgar13: Finale Variablen müssen aber im Konstruktor gesetzt werden, dein Beispiel ist falsch.

Mal davon abgesehen, dass man Methodennamen klein schreibt.

Um mal das Missverständnis des Aufrufes und des Überschreibens zu erklären. Eine Methode rufst du auf, wenn du den Inhalt aus dieser zur Anwendung bringen möchtest.
Java:
A a = new A();
a.abcd();
Das ist ein Aufruf, weil du hier nicht an den Code der Methode gehst und diesen veränderst, sondern weil du sagst, auf dem Objekt "a" soll nun die Methode "abcd" aufgerufen(!) werden und der Code darin ausgeführt! Nichts sonst!

Wenn du aber eine Methode überschreibst, dann veränderst du in gewisserweise den Inhalt dieser Methode. Dir bleibt zwar die Möglichkeit die alte Methode mit dem alten Inhalt aufzurufen und deinen neuen daranzuhängen, das ist aber jetzt ein anderes Thema/andere Frage.
Java:
public class A {    
    public void overridable() {     
        int a = b + c;
    }
}
Java:
public class B extends A {
   @Override
   public void overridable() {
       int a = b + d;
   }
Hier überschreibst du die Methode, weil du ihr einen ANDEREN Inhalt, eine andere Arbeitsweise "übergibst". Du möchtest, dass die Methode nicht die "alte" Arbeitsweise ausführt, sondern eine von dir bestimmte, die dann als Standardarbeitsweise ausgeführt wird. Hier überschreibst du die Methode, aber aufrufen tust du sie hier nicht! Du bestimmt einen neuen Code-Rumpf für die Methode!

Außerdem ist es bei den finalen Attributen genauso! Die finalen Attribute sind unveränderbar nach erstmaliger Zuweisung, entweder durch den Konstruktor oder schon in der Deklaration selbst! Dieses Verhalten kannst du auf die Methoden übertragen. Die Methoden kann man verwenden, aber ihren Inhalt wie in einem finalen Attribut nicht verändern!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Setter-Methode mit final-Attribut Java Basics - Anfänger-Themen 9
I Variable innerhalb Methode: Local variable test defined in an enclosing scope must be final or effectively final Java Basics - Anfänger-Themen 3
J final attribute erben Java Basics - Anfänger-Themen 2
L Methode implementieren, Parameter die übergeben werden sind final Java Basics - Anfänger-Themen 4
A final String verrechnen Java Basics - Anfänger-Themen 2
N Wie kann ich eine meine Variable Final machen? Java Basics - Anfänger-Themen 1
A Variablen zum final verändern Java Basics - Anfänger-Themen 4
D Interface Final für Parameter in überschriebenen Methoden? Java Basics - Anfänger-Themen 3
E Sinn: final in Parameterliste verwenden Java Basics - Anfänger-Themen 2
M Iterator cannot refer to a non final... Java Basics - Anfänger-Themen 20
shiroX Klassen Klasse/Methode private final jUnit-Fehler Java Basics - Anfänger-Themen 5
D Kapselung final Variablen mit Getter? Java Basics - Anfänger-Themen 2
R JTextArea final Status ändern Java Basics - Anfänger-Themen 11
F Static final Klasse Java Basics - Anfänger-Themen 0
S Kopierkonstrukter eines Objekts mit final Attributen Java Basics - Anfänger-Themen 6
T Schlüsselworte final Java Basics - Anfänger-Themen 1
M Wann final verwenden? Java Basics - Anfänger-Themen 5
F Methoden Cannot refer to a non-final variable.. verständnisproblem. Java Basics - Anfänger-Themen 7
C Klassen Minesweeper Problem. int needs to be final (inner class problem) Java Basics - Anfänger-Themen 3
R Variablen final String Variable als Attribut veränderbar? Java Basics - Anfänger-Themen 21
U final Instanz Java Basics - Anfänger-Themen 11
W run Methode in Time erzwingt final Java Basics - Anfänger-Themen 3
D Polymorphie final class Java Basics - Anfänger-Themen 2
C Erste Schritte felder, die public final sind Java Basics - Anfänger-Themen 6
H static final vs. final static Java Basics - Anfänger-Themen 3
N Bessere Performance durch final: wann denn überhaupt? Java Basics - Anfänger-Themen 28
xehpuk Compiler-Fehler final Variable in try-catch Wert zuweisen Java Basics - Anfänger-Themen 8
J final variablen Java Basics - Anfänger-Themen 3
P Variablen static final boolean Java Basics - Anfänger-Themen 9
S Interface Final und interface Java Basics - Anfänger-Themen 6
ruutaiokwu final wenn immer möglich verwenden? Java Basics - Anfänger-Themen 30
N local variable model is accessed from within inner class; needs to be declared final Java Basics - Anfänger-Themen 4
C Error: The final local variable variable cannot be assigned, since it is defined in an enclosing typ Java Basics - Anfänger-Themen 4
T Verständnis von "final" und "static" Java Basics - Anfänger-Themen 6
T In methode Final Objekte übergeben? Java Basics - Anfänger-Themen 9
C final variable Java Basics - Anfänger-Themen 4
G Poi 3.5-Final zum laufen bringen Java Basics - Anfänger-Themen 2
H final/static Vererbung Java Basics - Anfänger-Themen 4
P Can not refer to a non final variable... Java Basics - Anfänger-Themen 3
H Variablen final? Java Basics - Anfänger-Themen 3
T Warum muss diese Variable final deklariert werden? Java Basics - Anfänger-Themen 5
G final Variablen in enhanched-for Java Basics - Anfänger-Themen 2
V Frage zu final und Class bzw. Class.cast Java Basics - Anfänger-Themen 5
G static final Java Basics - Anfänger-Themen 7
Q Vector verändert trotz final seine Größe Java Basics - Anfänger-Themen 5
A final Variablen und der GarbageCollector Java Basics - Anfänger-Themen 2
G OOP - final Java Basics - Anfänger-Themen 2
B objekt wann als final deklarieren? Java Basics - Anfänger-Themen 2
G Sollte man Klassenvariablen als final deklarieren? Java Basics - Anfänger-Themen 3
J Interface: The final field Variablen.N cannot be assigned Java Basics - Anfänger-Themen 2
B privat mit und ohne final Java Basics - Anfänger-Themen 4
B final vor Funktionsparameter? Java Basics - Anfänger-Themen 21
D Static, final Objekte mit Exceptions im Konstruktor Java Basics - Anfänger-Themen 2
W Fehlermeldung "...needs to be declared final" ! Java Basics - Anfänger-Themen 4
N Wieso final ? Java Basics - Anfänger-Themen 4
G <identifier> expected bei public void final Java Basics - Anfänger-Themen 3
A Problem mit innerer Klasse/final Java Basics - Anfänger-Themen 2
G Methoden + variablen als final definieren? Java Basics - Anfänger-Themen 3
F enum oder static final boolean? Java Basics - Anfänger-Themen 18
M enum final Methoden Java Basics - Anfänger-Themen 24
S final String Java Basics - Anfänger-Themen 2
N The serializable class.does not declare a static final . Java Basics - Anfänger-Themen 2
T private final String oder final String? Was ist richtig? Java Basics - Anfänger-Themen 4
F public final void getsignature() | anfänger Java Basics - Anfänger-Themen 7
A class does not declare a static final serialVersionUID Java Basics - Anfänger-Themen 13
G wieso muss Textfield final sein? Java Basics - Anfänger-Themen 6
M Cannot refer to a non-final variable Java Basics - Anfänger-Themen 10
A array nach initialisierung final machen? Java Basics - Anfänger-Themen 17
G public static void main(final String[] args) Java Basics - Anfänger-Themen 4
G Warum muss das Textfeld final sein? Java Basics - Anfänger-Themen 2
P final mit Parametern Java Basics - Anfänger-Themen 3
mrStudent <? extends T> und <? super T> Java Basics - Anfänger-Themen 1
berserkerdq2 Größter unterschied von extends thread und implements runnable? Java Basics - Anfänger-Themen 2
N Variabel in eine class mit "extends JLabel" übertragen Java Basics - Anfänger-Themen 2
J extends Problem Java Basics - Anfänger-Themen 2
N extends und super vs new object Java Basics - Anfänger-Themen 4
JavaTalksToMe Extends/Implements Frage Java Basics - Anfänger-Themen 3
D public ArrayList(Collection<? extends E> c); Java Basics - Anfänger-Themen 2
CptK Interface Klasse Frame (extends JFrame) aus anderer Klasse schließen Java Basics - Anfänger-Themen 7
J Implements und Extends Java Basics - Anfänger-Themen 5
C Was macht `public class ClassName<T extends Comparable<T>>`? Java Basics - Anfänger-Themen 14
J Compiler-Fehler Fehler bei Vektor (E extends Object declared in class Vector) Java Basics - Anfänger-Themen 9
M mehrere extends? Java Basics - Anfänger-Themen 19
J doppelname nach schlüsselwort extends Java Basics - Anfänger-Themen 4
V Was bewirkt das Schlüsselwort extends in Verbindung mit class bzw. public class ? Java Basics - Anfänger-Themen 2
T extends und implements Java Basics - Anfänger-Themen 11
Crazynet 2 extends Java Basics - Anfänger-Themen 22
S Wrapper Klasse und extends Java Basics - Anfänger-Themen 2
W Methoden Rückgabedatentyp java.util.Map<java.lang.String,? extends ...> Java Basics - Anfänger-Themen 4
R Vererbung Übergabe von Variablen der Superklasse an Subklasse mit "extends" Java Basics - Anfänger-Themen 5
K Erste Schritte Extends Implements Java Basics - Anfänger-Themen 4
S Threads Thread wenn extends schon vergeben Java Basics - Anfänger-Themen 8
vandread Java Wildcards - Wann super wann extends? Java Basics - Anfänger-Themen 2
F Anfängerfrage zu extends Java Basics - Anfänger-Themen 12
B addAll(Collection<? extends E> c) Java Basics - Anfänger-Themen 9
T Input/Output StructuredFileReader extends BufferedReader Java Basics - Anfänger-Themen 6
K Erste Schritte extends vererbung Java Basics - Anfänger-Themen 15
P Class<? extends Entity> Array Java Basics - Anfänger-Themen 9
Y Threads extends Thread oder implements Runnable Java Basics - Anfänger-Themen 10
C Vererbung "extends" umgehen mittels Objekterzeugung?! Java Basics - Anfänger-Themen 29

Ähnliche Java Themen

Neue Themen


Oben