黑马程序员技术交流社区
标题:
为什么这里用this和super结果都是Test?
[打印本页]
作者:
Sunday
时间:
2014-4-16 00:23
标题:
为什么这里用this和super结果都是Test?
import java.util.Date;
public class Test extends Date{
public static void main(String[] args) {
new Test().test();
}
public void test(){
System.out.println(super.getClass().getName());//为什么这里用this和super结果都是Test?
}
}
//如果想获得Date怎么办??
复制代码
作者:
^o(孤8o|狼i¤F
时间:
2014-4-16 00:31
import java.util.Date;
public class Test extends Date{
public static void main(String[] args) {
new Test().test();
}
public void test(){
System.out.println(super.getClass().getName());//为什么这里用this和super结果都是Test?
}
}
this
this关键字:表示本类对象的引用
哪个对象调用的,this就表示哪一个对象
this用来区分成员变量和局部变量重名的情况
this()语句,在构造方法之间调用
this调用别的方法
然而 super 表示 子类引用父类的对象或者方法 在你的程序当中 getclass 是活获得当前类的类名 然而 你
System.out.println(super.getClass().getName());//为什么这里用this和super结果都是Test?
是在test这个类当中所以 输出结果是 Test
作者:
曹冬明
时间:
2014-4-16 01:34
本帖最后由 曹冬明 于 2014-4-16 01:35 编辑
<div class="blockcode"><blockquote>import java.util.Date;
public class Test extends Date{
public static void main(String[] args) {
new Test().test();
}
public void test(){
System.out.println(Test.class.getSuperClass().getName());//为什么这里用this和super结果都是Test?
}
}
//如果想获得Date怎么办??
复制代码
这样,你就可以得到父类名了,首先要获取本类的Class对象
作者:
坏米饭
时间:
2014-4-16 10:06
import java.util.Date;
public class Test extends Date{
public static void main(String[] args) {
new Test().test();
}
public void test(){
System.out.println(this.getClass().getSuperclass().getName());//这句你应该懂吧?
System.out.println(super.getClass().getName());//这句等于是调用父类的getClass()方法,但是由于多态的存在,所以实际执行的还是this的getClass()方法,因为每个类都有getClass()方法。结果当然是本类
}
}
复制代码
亲测可行
作者:
四川男人
时间:
2014-4-16 10:15
getClass()获取当前类,this代表当前类对象,super代表父类对象,
this.getClass().getSuperclass().getName()获取父类
super.getClass().getName()获取当前类
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2