今天看书,看到super与this的地方,按照书里的例子,写了一个程序,些程序由两个java源程序组成,分别为Supers.java与Thiss.java。以下分别是它们的代码。
Supers.java的代码为:
public class Supers{
String name="Supers";
void read(){
System.out.println("Supers.read");
}
}
Thiss.java的代码为:
public class Thiss extends Supers{
String name="Thiss";
void read(){
System.out.println("Thiss.read");
}
void test(){
String name="in";
System.out.println("name="+name);
System.out.println("This.name="+this.name);
System.out.println("Super.name="+super.name);
read();
this.read();
super.read();
}
public static void main(String[] args){
Thiss lx1= new Thiss();
lx1.test();
System.out.println(lx1.super.name);
}
}
结果编译出错,错误提示为:
F:\java\06>javac Thiss.java
Thiss.java:18: 找不到符号
符号: 类 lx1
位置: 类 Thiss
System.out.println(lx1.super.name);
^
1 错误
但只要我把“System.out.println(lx1.super.name);”这个地方去掉,程序就正确,请问个位网友,这是为什么?为什么只能在构造方法中使用super与this关键字,而在主入口的地方使用不了,如果我想在主入口的地方使用,程序要怎么改?谢谢!
Supers.java的代码为:
public class Supers{
String name="Supers";
void read(){
System.out.println("Supers.read");
}
}
Thiss.java的代码为:
public class Thiss extends Supers{
String name="Thiss";
void read(){
System.out.println("Thiss.read");
}
void test(){
String name="in";
System.out.println("name="+name);
System.out.println("This.name="+this.name);
System.out.println("Super.name="+super.name);
read();
this.read();
super.read();
}
public static void main(String[] args){
Thiss lx1= new Thiss();
lx1.test();
System.out.println(lx1.super.name);
}
}
结果编译出错,错误提示为:
F:\java\06>javac Thiss.java
Thiss.java:18: 找不到符号
符号: 类 lx1
位置: 类 Thiss
System.out.println(lx1.super.name);
^
1 错误
但只要我把“System.out.println(lx1.super.name);”这个地方去掉,程序就正确,请问个位网友,这是为什么?为什么只能在构造方法中使用super与this关键字,而在主入口的地方使用不了,如果我想在主入口的地方使用,程序要怎么改?谢谢!
而super 常常用来调用父类的方法(已经覆盖的方法)。
试试看吧
希望对楼主你有帮助
^_*
this当前对象的引用
this当前对象的引用 同意楼上观点