Können wir einen Konstruktor in Java überschreiben und kann ein Konstruktor privat sein?

7

Ich würde eine Erklärung für diese Fragen schätzen:

  1. Können wir Override einen Konstruktor in Java erstellen?
  2. Kann ein Constructor privat sein?
S.Ganesh 25.03.2011, 09:23
quelle

11 Antworten

26

Nein, Sie können einen Konstruktor nicht überschreiben. Sie sind nicht geerbt. Jeder Unterklassenkonstruktor muss jedoch entweder an einen anderen Konstruktor innerhalb der Unterklasse oder an einen Konstruktor in der Oberklasse ketten. Also zum Beispiel:

%Vor%

Die Implikation, dass Konstruktoren nicht vererbt werden, ist, dass Sie dies nicht tun können:

%Vor%

Wie für Ihre zweite Frage, ja, ein Konstruktor kann privat sein. Es kann immer noch innerhalb der Klasse oder einer einschließenden Klasse aufgerufen werden. Dies ist üblich für Dinge wie Singletons:

%Vor%

Private Konstruktoren werden auch verwendet, um die beliebige Instanziierung zu verhindern, wenn Sie eine Dienstprogrammklasse haben, die nur statische Methoden hat.

    
Jon Skeet 25.03.2011 09:25
quelle
3

Konstruktor ist für eine Klasse gedacht. Es kann unter keinen Umständen außer Kraft gesetzt werden. Es ist so, als wollte man die Ferrari-Fabrik von der BMW-Fabrik wechseln (was nicht praktikabel ist). Sicher können Sie überladen, um die Funktionalität zu erhalten, die Sie brauchen.

Ja Konstruktor kann privat sein. Wenn Sie es privat machen, lassen Sie nicht zu, dass die Außenwelt ein Objekt direkt über Konstruktor erzeugt. Aber das Singleton-Muster verwendet eine öffentliche statische Methode, um den Konstruktor der Klasse aufzurufen, und das Objekt kann erstellt werden.

    
user2626445 28.11.2013 01:34
quelle
2

1) NEIN! Ein Konstruktor gehört zu der Klasse, in der er deklariert ist. Eine Unterklasse ist eine andere Klasse und muss einen eigenen Konstruktor haben. Also, Konstruktoren können einfach nicht überschrieben werden.

2) Ja, das wird normalerweise bei Singletons gemacht.

    
adarshr 25.03.2011 09:25
quelle
2
  1. Nein, wir können keinen Konstruktor außerhalb der Klasse verwenden, weil die Unterklasse der Konstruktor von treat als Methode ist. Ohne Rückgabetyp.
  2. Sie können es als eine private verwenden, aber wenn ein Konstruktor einer Klasse privat ist, dann können Sie das Objekt der respektierten Klasse nicht in eine andere Klasse verwandeln.
gaurav tyagi 08.10.2012 07:23
quelle
1

Nein, wir können einen Konstrukteur nicht überschreiben. Für die Implementierung von Singleton pattren sollten wir einen privaten Konstrukteur haben.

    
developer 25.03.2011 09:27
quelle
1

Versuchen Sie Folgendes: Ссылка 1 - & gt; Nein 2 - & gt; ja

    
hkairi 25.03.2011 09:30
quelle
1

1) Ist das nur eine Hausaufgabe, oder versuchen Sie etwas zu erreichen? Können Sie zeigen, was Sie mit einem übergeordneten Konstruktor erreichen möchten?

Da der übergeordnete Konstruktor zuerst aufgerufen wird, können Sie die Basisklasse an Ihre Bedürfnisse in Ihrem Konstruktor anpassen. Natürlich nur soweit der Zugriff auf Basisattribute nicht privat ist. Wenn Sie eine Klasse erweitern, aber ihre privaten Attribute nicht mögen, war das Ableiten von Fehlern ein Fehler.

2) Kann ein Konstruktor privat sein?

Ja, aber weißt du, wofür es gut ist?

    
user unknown 25.03.2011 09:31
quelle
1
  1. In einer abgeleiteten Klasse können Sie einen neuen Konstruktor mit derselben Signatur erstellen, der aber nicht wirklich überschrieben wird, da der Konstruktor der Elternklasse bei der Initialisierung der Klasse immer noch vor dem neuen aufgerufen wird.

  2. Der Konstruktor einer Klasse kann privat oder geschützt sein und natürlich öffentlich sein. aber wenn es geschützt oder privat ist, wie würden Sie die Klasse initiieren? (Eigentlich könntest du mit einer statischen Funktion in dieser Klasse ...)

kroiz 25.03.2011 09:36
quelle
1

Sie können den Rückruf verwenden:

In der übergeordneten Klasse:

%Vor%

in Kind:

%Vor%     
user1319976 29.03.2015 17:42
quelle
0

Beide sind nicht wahr, denn wenn eine Klasse eine andere Klasse erbt, ruft sie automatisch ihre Eltern-Klasse auf, daher macht es Sinn, dass wir sie nicht überschreiben und sie endgültig machen können.

    
saurabh kumar 03.06.2014 17:10
quelle
0

Sie können einen Konstruktor nicht überschreiben, Sie können ihm jedoch einen Zugriffsebenenmodifikator wie public, private oder default zuweisen. Sie möchten einen privaten Konstruktor für Dinge wie ein Singleton oder für eine Klasse, die meist aus statischen Methoden und solchen (z. B. Java-Klasse Math)

gemacht wird     
Nelle 03.06.2014 17:14
quelle

Tags und Links