Java接口的使用和匿名对象的创建
抽象类和接口的区别:
- 抽象类中的方法可以有方法体,就是能实现方法的具体功能,但是接口中的方法不行。
- 抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是 public static final 类型的。
- 接口中不能含有静态代码块以及静态方法(用 static 修饰的方法),而抽象类是可以有静态代码块和静态方法。
- 一个类只能继承一个抽象类,而一个类却可以实现多个接口。
package 接口;
/*
接口的使用:
1.接口实际上也满足多态性
2.接口,实际上就是定义了一种规范
3.开发中。体会面向接口编程
*/
public class UsbTest {
public static void main(String[] args) {
Computer com=new Computer();
//1.创建了接口的非匿名实现类的非匿名对象
Flash flash=new Flash();
com.transferData(flash);
//2.创建了接口的非匿名实现的匿名对象
com.transferData(new Printer());
//3.创建了接口的匿名实现类的非匿名对象
Usb Phone=new Usb(){
public void start(){
System.out.println("收集开始工作");
}
public void end(){
System.out.println("手记结束工作");
}
};
//4.创建了接口的匿名实现类对象
com.transferData(new Usb() {
@Override
public void start() {
System.out.println("mp3开始工作");
}
@Override
public void end() {
System.out.println("mp3结束工作");
}
});
}
}
class Computer{
public void transferData(Usb usb){//Usb usb=new Flash();
usb.start();
usb.end();
}
}
interface Usb{
//常量:定义了长、宽、最大、最小的传输速度等
void start();
void end();
}
class Flash implements Usb{
public void start(){
System.out.println("U盘开始工作");
}
public void end(){
System.out.println("U盘结束工作");
}
}
class Printer implements Usb{
public void start(){
System.out.println("打印机开始工作");
}
public void end(){
System.out.println("打印机结束工作");
}
}