ずっと気になっていたので、聞いてみようと思いました。
私が書くなら
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;
}
}
}
出力は
shape
triangle
でも書いたら
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";
}
}
出力は
shape
shape
最初のバージョンでは、同じ関数 getName() をすべてのサブクラスに何度もコピー アンド ペーストする必要がありました。もっと良い方法があるはずです。2 番目の例で何を変更する必要がありますか?