2010-02-15 7 views
-1

créer un autre objet de la classe:Comment appeler le constructeur no arg après avoir déjà créé un objet de la classe?

Rectangle rec = new Rectangle(2,4); 

Ce qui donne mon rectangle et hauteur de 2 et une largeur de 4.

Mais là, je peux quand même appeler le pas de constructeur arg plus tard dans mon code sans créer un nouvel objet?

sans faire ceci:

Rectangle rec2 = new Rectangle(); 
+1

Pouvez-vous s'il vous plaît elablorate pourquoi vous voulez appeler un constructeur et ne pas l'avoir « construire ». Je doute que ce soit possible, mais savoir pourquoi vous essayez de le faire pourrait aider les gens à répondre à votre question avec quelque chose qui est à la fois possible et raisonnable. –

+0

pourquoi voulez-vous appeler le constructeur plus tard? Quel est votre objectif final. –

+0

Je veux appeler le constructeur no arg parce que cela initialise un rectangle avec width = 1 et height = 1 – vhflat

Répondre

1

Si vous n'avez plus besoin de rec, vous pouvez faire rec = new Rectangle() à condition que le rectangle n'ait pas de constructeur arg.

Ou vous voulez juste remplacer les valeurs du rectangle actuel? si oui il suffit de changer par setters pour créer une méthode pour mettre à jour les valeurs ...

+0

rec = new Rectangle() a appelé le no contstructor dans l'objet que j'ai déjà créé. Merci! – vhflat

+4

Non, ce n'est pas le cas.il a créé un nouveau rectangle et assigné votre variable en maintenant votre ancien rectangle au nouveau rectangle. –

2

Normalement, cela est un signe que vous devez factoriser vos constructeurs tels que tout le code qui est commun à deux constructeurs ou plus est contenu dans un séparé (non constructeur) méthode.

0

non vous ne pouvez pas. Vous pouvez utiliser la réflexion pour créer un nouvel objet sans utiliser de nouveau mot-clé, mais je ne suis pas sûr qu'il appelle un constructeur. Par leur définition, les constructeurs créent de nouveaux objets.

0

Vous pouvez définir les propriétés de base de votre objet dans une méthode et d'appeler cette méthode dans les constructeurs

ou

Dans votre cas d'utilisation rec = null; rec = new Rectangle(); // si vous n'avez pas besoin de Rectangle (2,4)

0

Non, vous ne pouvez appeler qu'un seul constructeur.

Si vous souhaitez remplacer les coordonnées, vous pouvez utiliser la méthode setBounds, par ex.

rec.setBounds(0,0,0,0); 

Mais, à moins que vous développez un jeu de téléphone mobile, il n'y a pas beaucoup d'intérêt à réutiliser l'ancien rectangle, et il est plus simple de créer un nouveau.

0

Vous ne pouvez absolument, voici comment

public class Example { 
    //no arg constructor 
    public Example() { 
     //your code 
    } 
    //constructor with argument 
    public Example(String arg) { 
     //call the no arg constructor 
     this(); 
     //do something else 
    } 
} 
Questions connexes