问题描述
classA{protectedintv1;publicA(intsetValue){v1=setValue;}}classAA:A{publicintvv1{vv1=v1;//这里想能过继承v1的值,来给vv1赋值,这样可实现否?}}使用时:publicTestClass{voidTest(){Aa=newA(5);AAaa=newAA();//请问这时要怎么样用AA实例化一个对象,然后继承实例a中v1的值呢?又或者AA类要怎么改写呢?//WriteOut(aa.vv1);}}因为设计时,有同时引用父类和子类的情况,有什么办法可以实例化父类后{newA(5)},同时通过一些继承,同时得到相关子类的属性呢?
解决方案
解决方案二:
AA的构造函数重新写,把a的构造包含就好了
解决方案三:
classAA:A{publicAA(intA){base(A);//把值传到基类}}AAa=newAA(1);
解决方案四:
1.可以实现"给vv1赋值"2.classAA:A{publicstaticintvv1......即可实现Aa=newA(5);inti=AA.vv1;3."实例化父类后{newA(5)},同时通过一些继承,同时得到相关子类的属性".类似上面的方法,用static静态变量即可实现
解决方案五:
classAA:A{pubicAA(intvalue):base(value){}publicintvv1{vv1=v1;//这里想能过继承v1的值,来给vv1赋值,这样可实现否?}}---AAaa=newAA(5);
解决方案六:
to3楼:这样就不是继承了,全局变量那里调用都一样了,那要再实例化其他对象一成不变了to4楼:这样直接实例化AA,就不是直接取到A(5)中的值了,因为条件是“有同时引用父类和子类的情况”,那么这时要取得是父类的继承值,而不是重新实例化AA,有没有办法做到通过继承直接引用到父类的v1值呢?