问个继承的问题

现有父类:
class Parent {
    public static String st;
}


两个子类:
class C1 extends Parent{
    public static String st = "11";
}

class C2 extends Parent{
    public static String st = "22";
}

另外两个子类都需要一个方法fun(),其中要调用自己类中的st成员。
这两个的方法的代码一模一样,所以我准备在Parent里实现这个方法。
但问题出现了:Parent里实现的这个方法调用的st是Parent里面那个,而不是C1 或者 C2 里的。我怎样才能让子类调用的fun()中使用的st是该类自己的成员?

public abstract class Parent
{
static String st = "panel";

abstract String getSt();

String run()
{
    return getSt();
}

}

class C1 extends Parent
{
public static String st = "11";

@Override
String getSt()
{
    return st;
}

}

class C2 extends Parent
{
public static String st = "22";

@Override
String getSt()
{
    return st;
}

}

你两个子类里都有这么一段,我曾提到方法的实现一样所以要放在父类里。

但这两个方法不一样,做的事也不一样。子类实现父类的抽象方法,然后返回自己的成员属性。

上面这段代码没办法实现你所说的问题吗?

你声明的时都是用public static 访问直接用 类名.st就可以了
如:Parent.st //父类的值, return C1.st;//返回子类C1的属性st的值
return C2.st;//返回C2属性st的值

这应该就是体现到了Java的一个面向对象的特征了---多态.
你就直接在父类实现这个方法,子类重写这个方法了..
只是你在new对象的值时候指向子类的实例就行了,
例如
Parent p=new C1();
p.fun();这不就是调的子类的吗?