【问题标题】:How do I inherit variables from specific instance of a superclass?如何从超类的特定实例继承变量?
【发布时间】:2013-11-10 09:19:52
【问题描述】:

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

【问题讨论】:

    标签: java inheritance state instance-variables


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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        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
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-05-16
          • 2020-05-18
          • 2013-08-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-11-05
          • 2023-01-19
          相关资源
          最近更新 更多