新人学Java,大侠们多指点指点.越详细越好.这里给大侠抱拳了~~~public class Car{
public void Car1(){
System.out.println("Car的方法");
}
public static void main(String[]args){
Car t = new Bmw();

//书上说判断t是不是Bmw的类型.我理解不了,Bmw里根本都没t这个变量,去哪判断去?
//还是说判断Bmw是否继承了Car这个类? 
if(t instanceof Bmw){


//这句话的目的是不是让在父类调用Bmw的属性和方法.(即和父类不同的属性和方法)
Bmw m =(Bmw)t; 
m.Bmw2();
System.out.println(m.c);
  }
}
}
class Bmw extends Car{
int c =123;
public void Car1(){
System.out.println("Bmw的方法");
}
public void Bmw2(){
System.out.println("Bmw2的方法");
}
public static void main(String[]args){
Bmw t = new Bmw();
}

}

解决方案 »

  1.   

    t instanceof Bmw
    这句话的意思不是 t 是不是属于 Bmw 当中的一个变量,而是 t 这个变量是否属于 Bmw 这个类型,呵呵。
      

  2.   


    感觉楼主对于引用和对象的概念还是比较模糊,要弄清继承和多态的问题,首先一定要分清引用和对象的区别
    Bmw m =(Bmw)t; 
    这句话的目的是把引用t(t属于父类Car类型)所指向的对象分配给引用m(m属于子类Bmw类型)
    这样一来,利用引用m,就可以调用子类Bmw中所特有的方法(即和父类不同的属性和方法)
    而父类Car的引用t是无法调用子类中独有的那些方法的
      

  3.   

    public static void main(String[]args){}怎么父类里面有,子类里面也有,有什么特殊用处么?
      

  4.   

    我也不懂啊
    请问大侠们
    System.out.println(m.c);
    为什么输出的是Bmw2的方法
    123啊?
    m.c代表什么?
      

  5.   

    m代表Bmw类的实例对象
    c代表Bmw类的属性成员,int c =123;
    所以m.c就是指123.
     m.Bmw2();
    这个输出结果是
    Bmw2的方法