你好,super不是代表父类对象吗?super.xx(),调用的是父类里的方法,那么super.getClass()跟new Date().getClass()应该是一样的吧?麻烦再解释下作者: 袁梦希 时间: 2013-4-28 17:30
学习了 ~~~~~作者: 金辉 时间: 2013-4-28 17:53
super不是超类的引用,而是表示在子类中调用父类的方法或属性而已
class B extends A{
public void print(){
System.out.println(super.getClass());//调用A类中的getclass()方法,A是Object的子类,A中的getClass()是Object中的,运行时期的实例是B类,所以输出的依然是Class B
System.out.println(this.getClass()); //调用B类中的getclass()方法,此方法从A继承的,A从Object继承的,运行时期的实例是B类,所以输出的是Class B
/*上面的super.getClass()和this.getClass()都是调用的Object中的getClass(),而super.getClass()和this.getClass()都是通过实例化B类,调用print(),从而调用这两个方法,运行时期的类都是B,Object中的getClass()返回的是运行时期的类 名,所以输出都是Class B
*/作者: cowthan 时间: 2013-4-28 19:51
这个问题还真值得好好考虑考虑,super到底是个什么东西
1、不能认为super是子类的成员,否则就相当于:
class Test extends Date{
private Date super; //那这样调用super.getClass()就得到Date的Class了
}
2、所以super我觉得就应该单纯的看作是支持面向对象的继承机制的某种单独的存在,
super存在的意义就是把子类和父类连起来,让子类能访问父类的信息。