====Syntaxe==== * Cas général public class Maison { public int visibilitePublic(int n1, int n2); protected void visibiliteProtege(int n1, int n2, int n3); void visibilitePackage(int n1, int n2, int n3); private void visibilitePrivee(string n3); } [[https://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html|Controlling Access to Members of a Class]] {{ :lang:java:javatutorials.zip |Archive du 29/09/2019}} ^ Modifier ^ UML ^ Class ^ Package ^ Subclass ^ World ^ | public | + | Y | Y | Y | Y ^ | protected | # | Y | Y | Y | N ^ | no modifier | ~ | Y | Y | N | N ^ | private | - | Y | N | N | N ^ * Class abstraite Une classe doit être déclarée ''abstract'' pour définir les méthodes abstraites. abstract class Sum { public abstract int sumOfTwo(int n1, int n2); protected abstract int sumOfThree(int n1, int n2, int n3); } class Demo extends Sum { @Override public int sumOfTwo(int n1, int n2) { return 0; } @Override protected int sumOfThree(int n1, int n2, int n3) { return 0; } } L'héritage multiple via ''extends'' est interdit. * Interface interface Sum { public abstract int sumOfTwo(int n1, int n2); public abstract int sumOfThree(int n1, int n2, int n3); } class Demo implements Sum { @Override public int sumOfTwo(int n1, int n2) { return 0; } @Override public int sumOfThree(int n1, int n2, int n3) { return 0; } } L'héritage multiple d'interfaces via ''implements'' est possible.