class SubClass extends SuperClass { int a; SubClass(int a) { this.a=a; } public void printA() { super.printA();//super关键字显式的调用SuperClass. System.out.println("In the sub class"); System.out.println("a="+a); }!error ->少了 }
请先帮我解释一下这个错误是什么意思 错在哪里?要如何修改第二点就是Super关键字的作用
修改如下:class SuperClass { int a; SuperClass() { a=10; } public void printA() { System.out.println("In the super class"); System.out.println("a="+a); } } class SubClass extends SuperClass { int a; SubClass(int a) { this.a=a; } public void printA() { super.printA();//super关键字显式的调用SuperClass. System.out.println("In the sub class"); System.out.println("a="+a); } } class OverrideDemo { public static void main(String args[]) { SubClass s2=new SubClass(20); s2.printA(); } } super.printA();//super关键字显式的调用SuperClass 说得很明白阿,就是调用超类的方法
class SuperClass { int a; SuperClass() { a=10; } public void printA() { System.out.println("In the super class"); System.out.println("a="+a); } } class SubClass extends SuperClass { int a; SubClass(int a) { this.a=a; } public void printA() { super.printA();//super关键字显式的调用SuperClass. System.out.println("In the sub class"); System.out.println("a="+a); } }//在你的程序中少了这个“}”符号 class OverrideDemo { public static void main(String args[]) { SubClass s2=new SubClass(20); s2.printA(); } }
{
int a;
SubClass(int a)
{
this.a=a;
}
public void printA()
{
super.printA();//super关键字显式的调用SuperClass.
System.out.println("In the sub class");
System.out.println("a="+a);
}!error ->少了 }
{
int a;
SuperClass()
{
a=10;
}
public void printA()
{
System.out.println("In the super class");
System.out.println("a="+a);
}
}
class SubClass extends SuperClass
{
int a;
SubClass(int a)
{
this.a=a;
}
public void printA()
{
super.printA();//super关键字显式的调用SuperClass.
System.out.println("In the sub class");
System.out.println("a="+a);
}
}
class OverrideDemo
{
public static void main(String args[])
{
SubClass s2=new SubClass(20);
s2.printA();
}
}
super.printA();//super关键字显式的调用SuperClass
说得很明白阿,就是调用超类的方法
是不是凡是调用超类,都使用Super关键字??还有个问题就是为什么程序在编译出现这两个错误
错误的原因是什么
如何修改再麻烦大家了!~
你原先的SubClass的closing } 缺少了,结果编译器将class OverrideDemo视作SubClass的一个non-static inner class(这个概念估计你不清楚,请查看TIJ之类的书籍),而non-static inner classes是不能拥有static的东西的(final的static声明倒是允许的)。
{
int a;
SuperClass()
{
a=10;
}
public void printA()
{
System.out.println("In the super class");
System.out.println("a="+a);
}
}
class SubClass extends SuperClass
{
int a;
SubClass(int a)
{
this.a=a;
}
public void printA()
{
super.printA();//super关键字显式的调用SuperClass.
System.out.println("In the sub class");
System.out.println("a="+a);
}
}//在你的程序中少了这个“}”符号
class OverrideDemo
{
public static void main(String args[])
{
SubClass s2=new SubClass(20);
s2.printA();
}
}