2010-03-25 7 views
1

Je travaille sur inheritence avec une interface graphique (Les interfaces graphiques utilisateur)en utilisant Inheritence avec GUI (interface graphique utilisateur) en Java

laissez-moi vous expliquer par exemple que j'ai fait super classe qui est le véhicule et la sous-classe est la voiture, de sorte que le code pour faire inheritence sera

voiture public class véhicule

alors je veux construire la voiture de classe JFrame comme

pu blic class Car extends JFrame implémente ActionListener {

donc le problème est que je ne pouvais pas mettre les deux codes dans la même classe, et je dois le faire.

quelqu'un m'aide. merci à l'avance

Je souhaite que la question soit claire

Répondre

0

Renommer la classe de voiture à Carview ou faisant référence autre classe de voiture en utilisant son nom complet, par exemple myapp.domain.Car plutôt que de la voiture.

1

considèrent l'exemple:

class A extends B

Avant héritant, réfléchir à deux fois si A IS A KIND OF B, dites-moi maintenant si CAR IS A TYPE OF FRAME ?? NON?? Alors n'hérite pas.

créer un JFrame et ajouter voiture ... il


Une meilleure solution: Diviser voiture aux classes Model-View-Controller .. et ajoutez la Vue de voiture à l'écran (class Sceen extends JFrame)

Maintenant, MVC de votre voiture héritera le MVC du véhicule resp. Maintenant, il est logique: CAR IS A VEHICLE.

Plus Mieux: au lieu d'ajouter le point de vue de la voiture à l'écran (AGGREGATION), ont une fonction Screen qui obtient l'objet vue de voiture et de la peinture dans Screen (qui est un DEPENDENCY). Ainsi, atteindre un faible couplage.!

1

Java ne permet pas plusieurs superclasses par la conception (et très bonnes raisons.)

Cependant, il n'y a rien pour vous empêcher de laisser vehichle étendre JComponent (*), et extension de voiture de véhicule.

public class Car extends Vehicle { 
... 
} 

*) JComponent est probablement un meilleur choix pour la classe de base, comme JFrame est un élément plutôt IUG spécial. Un composant JComponent peut être ajouté à un JFrame à la place.

En outre, cette conception suppose que le but principal d'un véhicule (etc) est d'être une représentation graphique d'un véhicule. Sinon, vous pourriez envisager de diviser le comportement dans un VehicleViewer et un Véhicule, par exemple si le Véhicule représente réellement un véhicule réel, vous chargez/stockez des Véhicules à partir d'une base de données etc.

+0

Héritage BAD: véhicule qui s'étend JComponent! – raj

+0

Pourquoi serait-il mauvais, si le but est d'être un widget qui représente un véhicule? Comme je l'ai écrit, si le but est de représenter un véhicule réel (comme, il a une identité), oui, alors c'est mauvais. – KarlP

Questions connexes