Java学习——接口和抽象类
来源:互联网 发布:2016做淘宝还有前途吗 编辑:程序博客网 时间:2024/04/29 00:38
前言
在Java面向对象语言当中,我们会用到接口。那么什么是接口呢?这里给小伙伴分享的就是Java中的接口。
接口
接口是Java的一些方法特征的集合,在接口中只包含常量和抽象方法。
接口的实现
接口的语法规则
接口是使用interface修饰,示例:
public interface 接口名{}public interface Runnale{},public interface IJump{}
类实现接口用implements关键字
class 类名 implements 接口名{}public class RunImpl implements Runnable{}
接口的命名规则
接口定义一般以able结尾,比如Runnable。或者I开头,如Jump 。
接口的实现一般是Impl结尾,比如RunImpl,JumpImpl;
使用接口的好处
1.接口不能多继承,但是可以多实现。
2.因为接口都为抽象方法,代码耦合度更低。
接口的特点
1.接口不能实例化。
2.接口的实现类:
1)是一个抽象类,可部分实现其中的抽象方法。2)是一个具体类,这个类必须重写接口中的所有方法。
3.成员变量 :
1)只能写常量;2)写与不写,强制加修饰符:public static final,不能与private和protected关键字共存。
4.没有构造方法。
5.成员方法:
1)只能是抽象的2)写与不写,强制加修饰符:public abstract ,不能与private和protected关键字共存。
6.一个类可以实现多个接口、一个接口可以继承多个接口,“,”分隔。
抽象类和抽象方法
在面向对象的领域一切都是对象,同时所有的对象都是通过类来描述的,但并不是所有的类都是来描述对象的。
如果一个类没有足够的信息来描述一个具体的对象,而需要其他具体的类来支撑它,那么这样的类我们称它为抽象类。
比如new Animal(),我们都知道这是一个产生一个动物Aniaml对象,但是这个Animal具体长成什么样子我们并不知道,它没有一个具体动物的概念,所以他就是一个抽象类,需要一个具体的动物,如猫、狗来对它进行特定的描述,我们才知道它长成什么样。
在面向对象领域由于抽象的概念在问题领域没有对应的具体概念,所以用表征抽象概念的抽象类是不能实例化。
抽象类使用abstract关键字完成
public abstract class Animal{}
Java中的抽象方法就是以abstract修饰的方法,这种方法只声明返回的数据类型、方法名称和所需的参数,没有方法体,也就是说抽象方法只需要声明而不需要实现。
public abstract void eat();//抽象类中吃的方法
使用抽象类和抽象方法的注意事项
- 抽象方法必须在抽象类中。
- 抽象方法不能使用new关键字实例化对象。
- 抽象方法必须在子类中进行重写。
- 只要包含抽象方法的抽象类,该方法必须要定义成抽象类,不管是否还包含有其他的方法。
- 抽象类中可以包含具体的方法,当然也可以不包含抽象方法。
- 子类中的抽象方法不能与父类的抽象方法同名。
- abstract不能与final并列修饰同一个类。
- abstract不能与private、static、final或native并列修饰同一个方法。
抽象类和接口的区别
成员区别:
1.抽象类:有构造方法,有抽象方法、以及其他与具体类一样的方法和属性
2.接口:没有构造方法,只有抽象方法和常量
关系区别
1.类与类(extends)
继承关系,只能单继承,可以多层继承
2.类与接口(extends、implements)
实现关系,可以单实现,也可以多实现。
还可以在继承一个类的同时,实现多个接口。
3.接口与接口(extends)
继承关系,可以单继承,但可以多继承。
设计理念不同
1.抽象类:IS-A,抽象类中定义的是共性功能。
2.接口:HAS-A,接口定义的是扩展功能。
- java基础学习总结——接口和抽象类
- java学习笔记8——抽象类和接口
- Java学习——接口和抽象类
- java学习笔记之—接口和抽象类
- java学习——抽象类、接口
- Java——接口和抽象类
- Java——抽象类和接口
- JAVA——抽象类和接口
- 抽象类和接口——Java
- JAVA学习之抽象类和接口
- Java抽象类和接口的学习
- java抽象类和接口(学习笔记)
- java学习:抽象类和接口
- [学习笔记]Java抽象类和接口
- Java学习笔记---抽象类和接口
- 【Java学习笔记】接口和抽象类
- 学习Java的接口和抽象类
- [学习笔记]Java抽象类和接口
- 密码生成 (利用数学原理解题,不明白,先记录)
- Effective C++ — 条款42:了解typename的双重意义
- 身份证识别、驾驶证识别、行驶证识别
- Cg Programming/Unity/Computing Image Effects计算图像效果
- java建造者模式
- Java学习——接口和抽象类
- GCC常用命令详解
- 推荐三个很赞的英语学习网
- Angular.forEach用法
- 从百度网页上下载歌曲,歌曲名称显示乱码
- Mysql学习总结(17)——MySQL数据库表设计优化
- 个人征信报告,OCR识别,OCR识别技术方案
- 获取div内容以及div属性
- java初始化