Java 如何从超类的特定实例继承变量?

Java 如何从超类的特定实例继承变量?,java,inheritance,state,instance-variables,Java,Inheritance,State,Instance Variables,如果我创建了一个超类的多个实例,其中它们的状态由类构造函数设置为任意值,那么如何确保子类从该超类的特定实例继承其状态 确保实例变量是“public”、“package”、“protected”或没有这样的修饰符——如果它们是“private”,子类将需要getter和setter方法来访问它们 在使用超类而不是直接使用超类时,创建子类的实例。子类将继承这些状态值 使用实例是不可能的。您可以使用构造函数中的任意值创建超类的子类(而不是实例),然后创建这些子类的子类。子类的每个实例都有自己的超类实例

如果我创建了一个超类的多个实例,其中它们的状态由类构造函数设置为任意值,那么如何确保子类从该超类的特定实例继承其状态

  • 确保实例变量是“public”、“package”、“protected”或没有这样的修饰符——如果它们是“private”,子类将需要getter和setter方法来访问它们
  • 在使用超类而不是直接使用超类时,创建子类的实例。子类将继承这些状态值

  • 使用实例是不可能的。您可以使用构造函数中的任意值创建超类的子类(而不是实例),然后创建这些子类的子类。

    子类的每个实例都有自己的超类实例。因此:

    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