Java中的抽象类与接口的简单介绍举例
来源:互联网 发布:程序员需要掌握的知识 编辑:程序博客网 时间:2024/06/08 04:41
Java中的抽象类与接口的简单介绍举例
定义
- 抽象类(abstract class):
在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。 - 接口(Interface):
在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过实现接口的方式,从而来实现接口的抽象方法。
特点
- 抽象类
- 在Java中抽象类表示的是一种继承关系,表示“is-a”关系,一个类只能继承一个抽象类,而一个类却可以实现多个接口;
- 抽象类不能实例化对象,所以抽象类必须要被继承,才能被使用;
- 接口
- 接口不能用于实例化对象。
- 接口没有构造方法。
- 接口中所有的方法必须是抽象方法。
- 接口不能包含成员变量,除了public static final 修饰的变量。
- 接口不是被类继承了,而是要被类实现。
- 接口支持多重继承。
- 接口中的方法是不能在接口中实现的,只能由实现接口的类来实现接口中的方法。
区别
- 接口中所有的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法。
- 类可以实现很多个接口,但是只能继承一个抽象类
- 类如果要实现一个接口,它必须要实现接口声明的所有方法。但是,类可以不实现抽象类声明的所有方法,当然,在这种情况下,类也必须得声明成是抽象的。
- 抽象类可以在不提供接口方法实现的情况下实现接口。
- Java 接口中声明的变量默认都是 final 的。抽象类可以包含非 final 的变量。
- Java 接口中的成员函数默认是 public 的。抽象类的成员函数可以是 private, protected 或者是 public。
- 接口是绝对抽象的,不可以被实例化。抽象类也不可以被实例化,但是,如果它包含 main方法的话是可以被调用的。
示例
下面是一个接口与抽象类简单的应用之间的关系,目的是为了更好的理解抽象类与接口的关系与使用!
先定义一个狗的抽象类以及三个相关几口
- 抽象类
/** *狗的抽象类 */public abstract class Dog { //狗会叫 abstract void bark(); //狗会跑 abstract void run();}
- 接口
1、
/** *具有逗比属性的狗 */public interface IFoolDog { //逗比狗会搞笑 void funny();}
2、
/** *短腿的狗 */public interface IShortLegDog { //短腿狗会卖萌 void actiongCute();}
3、
/** *... */public interface IFuckDog { void fuck();}
- 接口与抽象类的实现与继承
1、哈士奇
/** *会跑会叫会搞笑的哈士奇 */public class 哈士奇 extends Dog implements IFoolDog { @Override public void funny() { // do something } @Override void bark() { // do something } @Override void run() { // do something }}
2、柯基
/** *会跑会叫会卖萌的柯基 */public class 柯基 extends Dog implements IShortLegDog { @Override public void actiongCute() { // do something } @Override void bark() { // do something } @Override void run() { // do something }}
3、泰迪
/** *泰迪 */public class 泰迪 extends Dog implements IFuckDog { @Override public void fuck() { // do something } @Override void bark() { // do something } @Override void run() { // do something }}
总结
接口与抽象类的概念看似模糊不清,其实是要分清楚他们与子类之间的关系即可。
抽象类与子类之间的关系是“is-a”关系,即“是一个“,是父与子的关系,其本质是一样的;
接口与其实现类的关系是“like-a”关系,即“像一个”,是组合关系,上述举例虽然并不能生动的表示这种关系,但重在理解类之间的关系。
Java之路-路阻且长
阅读全文
0 0
- Java中的抽象类与接口的简单介绍举例
- 简单介绍java抽象类和接口的区别
- Java中的抽象类和接口的区别与联系
- Java中的抽象类和接口的区别与联系
- java 中的接口与抽象类的区别
- JAVA中的抽象类与接口的区别
- Java中的接口与抽象类的区别
- Java中的抽象类与接口的特点和区别
- java中的接口与抽象类
- 正确理解JAVA中的抽象类与接口
- Java中的抽象类与接口
- Java中的接口与抽象类
- java中的抽象类与接口
- java中的抽象类与接口
- Java中的抽象类与接口
- java 中的接口与抽象类
- java中的抽象类与接口
- Java中的抽象类与接口
- 将sublime添加到右键菜单
- JAVA大数BigInteger与BigDecimal
- idea上git冲突解决
- 【机房C#重构】对项目开发步骤的系统认识
- http://docs.python-requests.org/zh_CN/latest/user/quickstart.html
- Java中的抽象类与接口的简单介绍举例
- SpringApplicationConfiguration 这个不能用 怎么办?
- for循环打印菱形(两个三角)
- iframe的使用
- Spring Bean的自动装配和资源管理
- Ubuntu忘记用户登录密码以及管理员密码,请来这里帮你找回。
- 一个关于javaweb项目名处出现红叉,而项目下的目录和文件没有红叉的问题
- DPDK 收发包处理流程(二)(网卡初始化)
- Ubuntu编译openjdk