抽象类和接口
来源:互联网 发布:中国语言地图集 淘宝 编辑:程序博客网 时间:2024/05/18 00:25
在Java中,抽象类和接口在使用时有时很相似,有时又有区别,那么,我们整理一下抽象类和接口的特点以及不同之处
抽象类:1. 抽象类不能被实例化
2. 抽象类中可以定义普通成员变量和普通成员方法
3. 抽象类的关键字是abstract
4. 抽象类中的抽象方法只能有声明,不能有实现体
5. 子类在继承了抽象类之后,必须重写这个抽象类中的抽象方法
6. 抽象类中可以有0个或多个抽象方法
7. 抽象方法不能出现在普通类中,只能声明在抽象类中
8. 抽象类的引用可以装载子类
接口: 1. 接口不能被实例化
2. 接口代表的是功能
3. 接口中只能定义静态常量属性以及只有声明,没有实现的方法,属性会被默认加上static final关键字,接口中的方法为隐式的抽象方法
4. 接口可以继承接口
5. 接口的关键字是Interface,用implements实现接口
6. 一个类如果实现了接口,那么该类应重写接口中的所有抽象方法
7. 接口实际上是一种“纯虚抽象类”
8. 接口用来达成多继承的效果
9. 接口可以多继承,也可以被继承
10.接口的引用可以装载子类
11. 接口可以实现多态
面向接口编程实际上就是接口指向实现类的一种应用。
接口的应用(代码):
示例描述:假设我们现在需要回家,但是我们并不想要关注某一个车(对象),也就是说我们只要能够回家,达到回家的功能(接口)就可以了,而没有必要执着于某一辆车,所以为达到这种功能,我们可以将这个功能抽象成一个接口,而将一个个的车辆(对象)抽象成为实现该接口的类,此时,当我们要回家时,我们只需要利用接口的引用来装载子类,调用接口中的方法,便可以实现回家的功能了,这样,我们就回到家了。
public interface Tool
{
public void takeMeHome(); //表示某项功能,并不关注坐哪辆车回家
}
public class Taxi implements Tool //该类表示对象,具体乘哪辆车回家,实现功能
{
public void takeMeHome()
{
System.out.println("Taxi go home"); //重写接口中的功能函数
}
}
public class Bus implements Tool
{
public void takeMeHome()
{
System.out.println("Bus go home");
}
}
public class student //动作的发出者,谁回家
{
public void goHome(Tool tool) //回家的这个动作,这里实际传入具体哪辆车的一个父类引用,用父类引用去调用功能
{
tool.takeMeHome();
}
}
public class Run
{
public static void main(String[] args)
{
Student stu=new Student();
Tool tool=new Taxi();
stu.goHome(tool); //输出结果为Taxi go home
Tool t=new Bus();
stu.goHome(tool); //输出结果为Bus go home
}
}
在实际项目中,我们会经常使用面向接口编程的方式来编写项目代码,而这种结构的设计其实就是架构师需要做的工作。
- 抽象接口和抽象类
- 接口和抽象类
- 接口和抽象类
- 接口和抽象类
- 抽象类和接口
- 抽象类和接口
- 抽象类和接口
- 接口和抽象类
- 抽象类和接口
- 抽象类和接口
- 接口和抽象类
- 抽象类和接口
- 抽象类和接口
- 抽象类和接口
- 抽象类和接口
- 接口和抽象类
- 抽象类和接口
- 接口和抽象类
- hdu 2767 Proving Equivalences(强连通分量+缩点)
- tensor toolbox 处理稀疏张量
- opencv(java) byte[] 转换为Mat&Mat 转 byte[](用好Mat的get(),put()方法)
- redis 操作指南
- 中控H10考勤机管理员密码破解
- 抽象类和接口
- 你最不想错过的 2017 早期 25 个 Android 开源库
- Ubuntu之学会从源码编译安装package
- python3.6.3+opencv3.3.0学习笔记六--存储视频和图像
- 学习总结
- Codeforce
- spark安装local和standalone
- js日常小练习:实现图片的轮播效果
- 字符串的全排列