作业帮 > 综合 > 作业

java 小弟很多不明白,请各位高手指教

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/27 03:47:57
java 小弟很多不明白,请各位高手指教
public class Text
{
public static void main(String[] agrs)
{
SubCalc sc = new SubCalc();
System.out.println(sc.multiply(3, 4));
System.out.println(SubCalc.multiply(2, 2));
}
}
class SuperCaic
{
//public static int c=10;
protected static int multiply(int a,int b){return a*b;}
}
class SubCalc extends SuperCaic
{
//public int c=10;
//SubCalc() { super.multiply(a, b); }
public static int multiply(int a,int b)
{
//int c = 0;
//return c+a+b;
//int c = 1;
//return a + b+c;
int c=super.multiply(a,b);
return c;
}
}
super.multiply(a,b);为什么会错误呢?super.multiply(a,b)这个东西返回的是静态的还是非静态的呢;如果我把父类和子类函数的静态关键字都去除了就可以运行,为什么呢?请各位高手多多指教,小弟万分感激
错误提示:
Cannot use super in a static context
意思便是不能用super调用静态的上下文,比如静态方法和静态成员变量
super可以调用的是父类的成员函数(即非静态的)和成员变量(即非静态的),需要调用父类的类函数和类变量则需要用父类名调用.
结合到楼主的例子里
int c=super.multiply(a,b);
应该为
int c=SuperCaic.multiply(a,b);