0

If I create several instances of a superclass, where their state is set to arbitrary values by the class constructor, how can I make sure a subclass inherits its state from a specific instance of the superclass?

4

3 回答 3

0
  1. 确保实例变量是“public”、“package”、“protected”或没有这样的修饰符——如果它们是“private”,则子类将需要 getter 和 setter 方法来访问它们。
  2. 在使用超类时创建子类的实例,而不是直接使用超类。子类将继承这些状态值。
于 2013-10-30T16:28:19.590 回答
0

使用实例是不可能的。您可以通过使用构造函数中的任意值创建超类的子类(而不是实例)然后创建这些子类的子类来做到这一点。

于 2013-10-30T16:29:22.537 回答
0

子类的每个实例都有它自己的超类实例。所以:

public class Super
{
    protected int x;
    public Super( int x ) { this.x = x; }
}

public class Sub
{
    public Sub( int x ) { super( x ); }
    public void func() { System.out.println( x ); }

    public static void main( String[] args )
    {
        Sub a, b;
        a = new Sub( 1 );
        b = new Sub( 2 );
        a.func(); b.func();
    }
}

这将输出

1
2
于 2013-10-30T16:41:28.963 回答