这件事困扰了我很长时间,所以我想我会继续问。
如果我写
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() 一遍又一遍地复制/粘贴到每个子类中。必须有更好的方法。在第二个示例中我需要更改什么?