====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.