public class TD extends T { void m() {
super.m();
} public static void main(String[] args) {
T tt = new TD();
tt.m();
}}class T { void m() {
System.out.println(this.toString());
if (this instanceof T) {
System.out.println("TT");
}
if (this instanceof TD) {
System.out.println("TD");
} }
}
打印结果,为什么?
tt是属于TD的实例 属于TD类型
但是定义的时候是定义为T(父类)类型的
所以可以说tt既属于T类型 更属于TD类型this表示本类...
instanceof表示判断一个对象是否是某个类类型
"对象.instanceof类名" 当符合时返回true综上
调用tt.m()时
将tt传入父类
m方法里面的两个判断都为true
2.this 表示本类,本类的话就 this instanceof T 才为true
3.恳请再详细点`
T tt=new TD();T中保存的是子类TD的对象,这个实例中T类m方法中的this代表的是TD对象. 因为TD是T的子类,所以子类肯定是属于父类的类型,本类的对象当然也属于本类的类型.
instanceof的操作相当于:
tt.getClass().equals(T.class)
至于this就是指当前对象的引用。
instanceof 判断 一个对象 是否是一个类的实例。
"this就是指当前对象的引用",调用m方法时当前对象是tt,而tt的就是T类型的啊 this就好比是你传入的对象的类型.
第一句话仔细读下.
在本例中tt是TD类的对象,由于是tt调用的m()方法,所以this指的就是tt,因此打印的是TD类的对象;tt是TD的对象,也是T的对象,所以instanceof判断都为真,打印出TT和TD.
System.out.println("TD");//THIS是在父类里用的,在这里应该不会进入IF语句
}