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");
} }
}
打印结果,为什么?

解决方案 »

  1.   

    //System.out.println(this.toString());没有这句
      

  2.   

    打印结果为TT和TD...T tt = new TD();
    tt是属于TD的实例 属于TD类型
    但是定义的时候是定义为T(父类)类型的
    所以可以说tt既属于T类型 更属于TD类型this表示本类...
    instanceof表示判断一个对象是否是某个类类型
     "对象.instanceof类名" 当符合时返回true综上
    调用tt.m()时
    将tt传入父类 
    m方法里面的两个判断都为true
      

  3.   

    1.这里的有值传递吗?父类里谁接收呢?this ?
    2.this 表示本类,本类的话就 this instanceof T 才为true
    3.恳请再详细点`
      

  4.   

    没有吧   在java中其实所谓的引用传递都是值传递   
      

  5.   

    instanceof是判断对象是否属于一个类型,并不是判断是否属于本类.
    T tt=new TD();T中保存的是子类TD的对象,这个实例中T类m方法中的this代表的是TD对象. 因为TD是T的子类,所以子类肯定是属于父类的类型,本类的对象当然也属于本类的类型.
    instanceof的操作相当于:
    tt.getClass().equals(T.class)
      

  6.   

    instanceof 和 javacript中的typeof一样 结果是两个都打印 
      

  7.   

    instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。
    至于this就是指当前对象的引用。
      

  8.   

    this 本类;
    instanceof   判断 一个对象 是否是一个类的实例。
      

  9.   


     
     
     
    "this就是指当前对象的引用",调用m方法时当前对象是tt,而tt的就是T类型的啊 this就好比是你传入的对象的类型.
    第一句话仔细读下.
      

  10.   

    在Java中,this通常指当前对象;instanceof是Java的一个二元操作符,和==,>,<是同一类东东。由于它是由字母组成的,所以也是Java的保留关键字,它的作用是测试,它左边的对象是否是它右边的类的实例,返回boolean类型的数据。
    在本例中tt是TD类的对象,由于是tt调用的m()方法,所以this指的就是tt,因此打印的是TD类的对象;tt是TD的对象,也是T的对象,所以instanceof判断都为真,打印出TT和TD.
      

  11.   

    this 在哪里用就是哪个对象的自身引用,         if (this instanceof TD) {
                System.out.println("TD");//THIS是在父类里用的,在这里应该不会进入IF语句
            }
      

  12.   

    根据多态,调用的方法应该是先调用子类TD的m()方法,在子类TD的m()方法中调用了父类的m()方法