1:我终于知道问题所在了,原来是stackTest2这个父类,没有定义为public,所以才会提示找不到该类!我也就是只想在stackTest3这个子类中引用父类的部分方法,还有成员变量! 所以用继承来用,不知道这种思想对不,小弟初学,问问大家!!2:因为我写的是数组模拟堆栈计算表达式的程序,所以堆栈指针是需要变化的,而数组大小是我固定的,所以我在父类这样定义 protected final int maxSize = 20; protected final int[ ] aStack = new int[ maxSize ]; protected static int top = -1;我想问的是,我在子类的main()方法中用到了top变量,因为main()方法是static的 是不是top也必须这样static!proctected和final没用错吧,按我的需求! 因为我只想在子类总引用,而不是全局! 希望高手指点一下,小弟,万分感激!!
因为程序中需要使用stackTest2中的成员变量,我又不想使用public型
于是我改成子类继承class stackTest3 extends StackTest2结果编译通过,怎么回事啊????!!!
{
……
}
所以用继承来用,不知道这种思想对不,小弟初学,问问大家!!2:因为我写的是数组模拟堆栈计算表达式的程序,所以堆栈指针是需要变化的,而数组大小是我固定的,所以我在父类这样定义
protected final int maxSize = 20;
protected final int[ ] aStack = new int[ maxSize ];
protected static int top = -1;我想问的是,我在子类的main()方法中用到了top变量,因为main()方法是static的
是不是top也必须这样static!proctected和final没用错吧,按我的需求!
因为我只想在子类总引用,而不是全局!
希望高手指点一下,小弟,万分感激!!
2. 如果你想用一个类的部分功能,最好别用继承,而new一个那个类的对象就好了。除非是一类东西才用继承。
3. 如果你用了继承,那么static方法引用本类中的变量一定要用static的,final已经包含static的含义了。所以你那几个变量用的没有错。
stackTest3 stack1 = new stackTest3( );
stackTest3 stack2 = new stackTest3( );因为父类中的top成员变量已经变成了4,而我需要在stackTest3子类中引用,但由于是static
的,所以,我不得不这样stack1.top=-1;
但是发现stack1.top+1的时候,stack2中的也肯定+1了,其实都是这个static静态变量的原因但如果不用,我在子类的static void main()中又不能使用,怎么解决这个问题?
难道非要这样,top定义为全局(public),然后不继承,使用stackTest2创建两个新对象!!
急呀!!!
stackTest2 stack1 = new stackTest2( );
stackTest2 stack2 = new stackTest2( );而不是用子类stackTest3 stack1 = new stackTest3( );
stackTest3 stack2 = new stackTest3( );