Cela me préoccupe depuis longtemps, alors j'ai pensé que je devais le demander.
Si j'écris
import java.util.*;
import java.lang.*;
class Main
{
public static void main (String[] args) throws java.lang.Exception
{
new Shape();
new Triangle();
}
public static class Shape
{
static String name = "shape";
Shape()
{
printName();
}
public void printName()
{
System.out.println( name() );
}
public String name()
{
return name;
}
}
public static class Triangle extends Shape
{
static String name = "triangle";
public String name()
{
return name;
}
}
}
alors la sortie est
shape
triangle
Mais si j'écris
import java.util.*;
import java.lang.*;
class Main
{
public static void main (String[] args) throws java.lang.Exception
{
new Shape();
new Triangle();
}
public static class Shape
{
static String name = "shape";
Shape()
{
printName();
}
public void printName()
{
System.out.println( name );
}
}
public static class Triangle extends Shape
{
static String name = "triangle";
}
}
alors la sortie est
shape
shape
Dans la première version, je dois copier/coller la même fonction getName() dans chaque sous-classe. Il doit y avoir un meilleur moyen. Que dois-je changer dans le deuxième exemple ?