
Envoyé par
vincs72
Merci encore pour les reponses.
Sinon pour le contexte static ou non :
En gros pour resumer un contexte static est procedural et evite l'objet?
Je ne suis pas sûr qu'on puisse dire cela car le contexte static fait partie intégrante de la POO. static ne veut pas dire procédural.
Le procédural et l'orienté objet sont deux méthodes de conception totalement différente.
Même si Java est fait pour être utilisé en utilisant la POO, il est tout à fait possible de faire du procédural (le contexte static y aidant effectivement). Cependant, tu perd tout les "avantages objets" que t'apporte le langage fait pour être utilisé avec la POO.

Envoyé par
vincs72
Et main() est une partie procedurale necessaire et c'est pour ca qu'il est forcement static ?
La méthode main() est nécessaire pour lancer l'exécution de ton programme. Comme au début de ton programme tu n'as encore aucun objet, il est nécessaire d'être dans un contexte static.
Une classe Java "exécutable" doit posséder une méthode main() qui à la signature
public static void main(String[] args);
Depuis Java 5 il est aussi possible d'utiliser
public static void main(String ...args);

Envoyé par
vincs72
Enfin je voulais savoir quelle est l'interet de faire du surclassement ? Par exemple pour :
"SocketAddress address = new InetSocketAddress(port_arg);"
pourquoi priver 'address' de methodes existant dans InetSocketAddress ?
(j'ai teste sans surclassement et cela marche aussi..).
Il est en général préférable de choisir le type le plus abstrait (le plus haut dans la hiérarchie de l'héritage), ceci afin de s'abstraire de l'implémentation de la classe (pour que si celle-ci change, cela n'impacte pas le reste du code). Ce principe est surtout valable lors du développement d'une API.
Bien entendu, si tu à besoin d'une fonctionnalité offerte par une implémentation particulière il faut utiliser celle-ci. En gros il faut choisir le type le plus abstrait qui convienne à l'utilisation que tu va en faire.
Partager