java基础-多态-接口

来源:互联网 发布:淘宝卖家关闭佣金 编辑:程序博客网 时间:2024/06/05 11:58

接口就是给出一些没有内容的方法,封装到一起,到某个类要使用的时候,再根据具体情况把这个方法写出来。


例子:

1、一个USB接口

public interface Usb {

public void start();

public void end();
}


2、camera和phone都来实现这个USB接口

Camera类:

public class Camera implements Usb{

@Override
public void start() {
System.out.println("相机开始工作");

}

@Override
public void end() {
// TODO Auto-generated method stub
System.out.println("相机停止工作");
}

}


Phone类:

public class Phone implements Usb {

@Override
public void start() {
System.out.println("手机开始工作");
}

@Override
public void end() {
System.out.println("手机停止工作");

}

}


3、Computer类,使用这个接口

public class Computer {
public void useUsb(Usb usb){
usb.start();
usb.end();
}
}


4、测试类

public class Test {
public static void main(String[] args) {

Computer com=new Computer();
Phone p=new Phone();
com.useUsb(p); //手机开始工作,手机停止工作
Camera c=new Camera();
com.useUsb(c);//相机开始工作,相机停止工作

}
}


在这个测试类中,可以看到,根据com.useUsb()方法中传入对象的不同,打印的内容也是不一样的,也就说,除了上一篇文章中的通过继承来体现多态,接口也体现了多态的特性


接口是更加抽象的抽象的类,抽象了里的方法可以有方法体,比如可以有普通的方法,而接口里的所有方法都没有方法体,接口体现了程序设计的多态和高类聚低耦合的设计思想


接口的注意事项:

1、接口不能被实例化

2、接口中的所有方法都不能有方法体

3、接口中可以用变量,但变量不能用private和protected修饰:

a、接口中的变量,本质上都是static,不管加不加static修饰

b、在开发中,经常把经常用的变量,定义在接口中,作为全局变量使用

c、一个接口不能继承其他的类,但可以继承其他接口


再举一个复杂一点的栗子:

1、Car接口

public interface Car {

//获取名称
String getName();
//获取价格
int getPrice();

}


2、两种车型,实现Car 的方法:

Bwcar :

public class Bwcar implements Car {

@Override
public String getName() {
return "BW";
}

@Override
public int getPrice() {
return 30000;
}

}


Qqcar 

public class Qqcar implements Car {

@Override
public String getName() {
// TODO Auto-generated method stub
return "奇瑞qq";
}

@Override
public int getPrice() {
// TODO Auto-generated method stub
return 5000;
}

}


3、卖车的门店

public class CarShop {
// 售车收入
private int money=0;

public void sellCar(Car car){
System.out.println("车型"+car.getName()+"  单价"+car.getPrice());
money+=car.getPrice();

}

//获取卖车收入
public int getAmount(){

return money;

}


4、测试类test:

public class Test {

public static void main(String[] args) {
CarShop shop=new CarShop();

shop.sellCar(new Bwcar());

shop.sellCar(new Qqcar());

System.out.println("总收入==》"+shop.getAmount());

}

}


在测试类中,我们可以看到,如果还有其他的车型要卖,则只需要再创建一个类,实现Car类中的所有方法即可,原来的代码都不需要更改。


接口和继承:

1、java的继承时单继承,也就是说一个类只能有一个父类,这种单继承可以保证类的纯洁性。但是会对类的扩展有一定影响

2、实现接口可以看作是对继承的一种补充。一个类继承了父类之后,还可以通过实现其他的类来扩展自己
















原创粉丝点击