Theoriefragen richtig beantwortet?

javac-

Mitglied
Hallo,

wir sollten ein paar Theoriefragen beantworten und ich bin mir bei ein paar nicht sicher.

1)Was ist der Unterschied zwischen Array und List?
Array hat feste größe Liste nicht

2) Wie kann man die Länge eines Arrays dynamisch ändern?
k.A. indem ich eine Liste verwende?

3)Unterschied zwischen Aggregation und Komposition?
Aggregation: Teile können einzeln existieren|Ehepartner nach Scheidung
Komposition: Das eine kann nur mit dem anderen existieren|Stockwerk nur im Haus

4)Wann verwendet man “ static ”?
Wenn man auf das Attribut/Methode auch zugreifen will ohne ein Objekt anzulegen

5)Was ist der Unterschied zwischen globalen und lokalen Variablen einer Klasse?
Zugriff global über Klassenname z.b. Tier.getAnzah(), zugriff lokal über instanz z.b. kuh.getName()

6)Erkläre überschreiben und überladen. Kann man beides gleichzeitig?
Ja kann man. Überladen ->unterschiedliche Parameter, Überschreiben -> Fkt. der Methode ändern

7)
Ist es möglich in Java einen Operator benutzerspezifisch zu überladen, also eigentlich zu
überschreiben?
Nein geht nicht

8) Unterschied zwischen Interace und abstrakte Klassen?
Abstrakte Kl. können auch fertig implementierte Methoden. haben, Interface nicht.
Von abstr. Kl. kann man erben, von Interface nicht.

9)
Was ist der Unterschied zwischen “ javac ” und “ java ” in der Commandline
/ Terminal?
Hier hab ich keine Ahnung


Kann man meine Antworten so durchgehen lasssen? Bei Nr. 9 bräuchte ich Hilfe

Danke
 

thecain

Top Contributor
8) Unterschied zwischen Interface und abstrakte Klassen?
Abstrakte Kl. können auch fertig implementierte Methoden. haben, Interface nicht.
Von abstr. Kl. kann man erben, von Interface nicht.
ein Interface kann von einem Interface erben.
Interfaces können default implementierungen haben seit Java 8

Jedoch kann man von mehrere Interfaces auf einer Klasse verwenden, aber nur von einer abstrakten Klasse Erben
 

Java20134

Bekanntes Mitglied
Zu zweitens: Indem du ein neues Array erzeugst
Zu viertens: Wenn die Variable für die Klasse immer den gleichen Wert hat

Und Interfaces können auch fertige Methoden besitzen!
 

javac-

Mitglied
Und Interfaces können auch fertige Methoden besitzen!

In unserem Skript steht:
Ein Interface enthält die Definition von Methodenköpfen (bzw. Methodensignaturen).
-In keinem Fall enthält es eine Implementierung
-Bespiel:
public interface Runnable {
void run ();
}
-Ein Interface legt nur die Anforderungen an eine potentielle Klasse fest, welche diese Schnittstelle implementieren kann.
 

coco07

Bekanntes Mitglied
Zu zweitens: Indem du ein neues Array erzeugst
Zu viertens: Wenn die Variable für die Klasse immer den gleichen Wert hat

Und Interfaces können auch fertige Methoden besitzen!

Zu zweitens: Genau, Größe nur durch die Instanziierung eines neuen Arrays änderbar.
Zu viertens: Java20134: Leider falsch! Du verwechselst static mit final... Statischer Kontext ist außerhalb einer Instanz über den Klassennamen verfügbar. Kann auch sein, dass du etwas anderes meinst, aber dann hast du dich etwas unglücklich ausgedrückt.

Fertige Methoden hört sich komisch an. Methoden mit einer default-Implementierung ist besser.
 

stg

Top Contributor
Zu zweitens: Genau, Größe nur durch die Instanziierung eines neuen Arrays änderbar.
Mit anderen Worten: Gar nicht! Einmal instanziiert kann die Größe eines Arrays nicht mehr verändert werden. Man kann nur der Variablen, die auf das Array zeigt, ein neues Array mit anderer Größe zuweisen. Dann muss man aber, sofern gewünscht, den Inhalt des alten Arrays in das neue kopieren.

Noch ergänzend zu 8:
Der wesentliche Unterschied besteht darin, dass ein Interface (default Implementierungen hin oder her) stets nur die öffentliche Schnittstelle definert.
Abstrakte Klassen besitzen zudem einen Konstruktur und einen inneren Zustand, mit dem man arbeiten kann.
 

mrBrown

Super-Moderator
Mitarbeiter
Zu viertens: Java20134: Leider falsch! Du verwechselst static mit final... Statischer Kontext ist außerhalb einer Instanz über den Klassennamen verfügbar. Kann auch sein, dass du etwas anderes meinst, aber dann hast du dich etwas unglücklich ausgedrückt.

Das klingt nach unglücklich ausgedrückt.
statische Felder gibt es nur einmal innerhalb des Programms - es ist also für alle gleich.
finale Felder können für jede Instanz unterschiedlich sein - sind aber fest und lassen sich nicht ändern.
 

da921610

Aktives Mitglied
Die 5 geht in eine komplett falsche Richtung.
Globale Variablen stehen in der ganzen Klasse zur Verfügung. Lokale Variablen nur in dem Bereich, indem sie erzeugt werden:

Java:
public class Demonstativ {
   
//    Global und in der ganzen Klasse verfügbar
    private int x;
   
//    Konstruktor
    public Demonstativ() {
        x = 5;
    }
   
//    Beispielmethode
    private void foo() {
//        a ist lokal und nur in der Methode verfügbar
        int a = 3;
        System.out.println(x+a);
       
        if (a==4) {
//            b ist auch lokal und nur im IF-Block verfügbar
            int b = 1;
            System.out.println(b+a);
        }
       
       
    }

}
 

Neue Themen


Oben