日期:2014-05-20  浏览次数:20695 次

求教java se 接口的初级问题
请大家看以下红色代码,不懂得是什么意思,请大家指教,我记得要访问类中的方法不是要定义一个对象出来然后调用类中的方法吗,怎么这个不用创造对象而可以直接用类名直接调用类中的方法呢??求解???




interface USB{ // 定义了USB接口
public void start() ; // USB设备开始工作
public void stop() ; // USB设备结束工作
}
class Computer{
public static void plugin(USB usb){ // 电脑上可以插入USB设备
usb.start() ;
System.out.println("=========== USB 设备工作 ========") ;
usb.stop() ;
}
};
class Flash implements USB{
public void start(){ // 覆写方法
System.out.println("U盘开始工作。") ;
}
public void stop(){ // 覆写方法
System.out.println("U盘停止工作。") ;
}
};
class Print implements USB{
public void start(){ // 覆写方法
System.out.println("打印机开始工作。") ;
}
public void stop(){ // 覆写方法
System.out.println("打印机停止工作。") ;
}
};
public class InterfaceCaseDemo02{
public static void main(String args[]){
Computer.plugin(new Flash()) ;
Computer.plugin(new Print()) ;
}
};

------解决方案--------------------
Computer.plugin(new Flash()) ;
等同于
Flash flash = new Flash();
Computer.plugin(flash) ;
------解决方案--------------------
因为plugin是静态方法,与楼主想的恰恰相反,调用静态方法的时候请用类名去调用,否则有些现在你自己都觉得奇怪,比如:
Java code

public class TestNull {
    public static void main(String[] args) {
        TestNull t = null;
        t.foo();
    }

    static void foo() {}
}

------解决方案--------------------
额,静态方法属于类而不属于实例,要实例才能调用的是实例方法,而静态方法即static修饰的方法可以通过类名.方法名的形式调用。