62,612
社区成员
发帖
与我相关
我的任务
分享
package com.avicit.zq.test;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
* Created by admin on 2016/9/18.
*/
public class Main extends A{
public static void main(String[] args) {
Main t = new Main();
t.dot();
}
}
class A {
private Class t = getClass();//referenced to Class Main (1)
protected Log logger = LogFactory.getLog(t);
B b = new B();
public void dot(){
System.out.println(t.getName());
b.dot();
}
}
class B{
private Class t = getClass();//referenced to Class B (2)
protected Log logger = LogFactory.getLog(t);
public void dot(){
System.out.println(t.getName());
}
}
//output:
com.avicit.zq.test.Main
com.avicit.zq.test.B
public class Main extends A {
public static void main(String[] args) {
Main t = new Main();
t.dot();
}
}
class A {
private Class t = getClazz();//referenced to Class Main (1)改一下这里,如果明白new子类,this是子类对象,那就理解t为啥是Main
B b = new B();
public void dot(){
System.out.println(t.getName());
b.dot();
}
public Class<?> getClazz() {//用另外一个方法来看
return this.getClass(); //子类继承父类,new子类,LZ觉得this是子类对象还是父类对象?如果是父类对象,那super还有什么意义?
}
}
class B{
private Class t = getClass();//referenced to Class B (2)
public void dot(){
System.out.println(t.getName());
}
}
com.avicit.zq.test.A
com.avicit.zq.test.B
实际返回结果是:
com.avicit.zq.test.Main
com.avicit.zq.test.B
com.avicit.zq.test.A
com.avicit.zq.test.B
实际返回结果是:
com.avicit.zq.test.Main
com.avicit.zq.test.B
[/quote]
我觉得我已经说清楚了.. 运行时Main对象就是Main的. 如果你 new A()的话 才是A的.
如果要父(超)类的类型的话,就用我给的那两个. 一个是直接父类,另一个是最顶级的父类