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、实现接口可以看作是对继承的一种补充。一个类继承了父类之后,还可以通过实现其他的类来扩展自己
- java基础--接口、多态
- java基础-多态-接口
- java基础2:接口,多态
- 【Java基础】Java接口
- [Java基础]Java接口
- Java基础---多态、抽象类、接口
- 黑马程序员---------JAVA基础接口,多态
- Java基础-多态&抽象类&接口
- Java基础----继承、多态、抽象、接口
- Java基础:继承、多态、抽象、接口
- Java基础(三)-----------接口/多态
- java基础总结十(接口、多态)
- Java基础 - 接口
- java基础----接口
- Java基础----接口
- Java基础_接口
- Java基础复习:接口
- java基础_03_接口
- OpenCV 2.4.9 配置使用
- python爬虫
- 引水入城
- JZOJ1239 邦德(加强版)
- 唉 再瞎搞你就一事无成了
- java基础-多态-接口
- Java并发编程:深入剖析ThreadLocal
- JZOJ5397. 【NOIP2017提高A组模拟10.6】Biology trie+LCA/哈希
- 2017-10-6离线赛总结
- codeforces 862b
- Codeforces Round #438 B. Race Against Time
- 焦点事件
- const的用法,特别是用在函数前面与后面的区别!
- 谈谈对Spring IOC的理解