抽象方法及接口的使用概念

abstract关键字

java 复制代码
/*
* 类和对象:
*   类:一个概念,客观不存在的,或者认为是一个模板。
*   对象:看得见摸得着的真实存在的物体。
*   对象---类的过程,抽象
*   类---对象的过程,叫实例化
*  抽象类:将类进一步抽象出来的类叫做抽象类。
*    类----抽象类的过程,进一步抽象
*    抽象类不能实例化
*   1、如何定义一个抽象类,使用abstract关键字,修饰符
* public abstract class 类名{
* }
* 2、抽象类,最重要的作用体现在它的抽象方法,所有继承自抽象类的子类
* 必须要重写父类抽象类当中的抽象方法。
*   (1) 什么是抽象方法?public abstract  返回类型 方法名();
*     抽象方法没有方法体,(只定义方法名。)
*   (2)普通类当中不能定义抽象方法。
*    (3)抽象类当中不一定就有抽象方法
*  3、抽象类不能实例化,但是继承了抽象类的普通子类可以实例化。
*   因为抽象类是类进一步抽象出来的概念,但是类本身是一个抽象的概念,
* 如果抽象类能实例化,代表类是一个实例了,这就跟类的定义违背了。
* */

final关键字

java 复制代码
/*
* final是一个关键字,也是修饰符,他可以修饰类、变量、和方法
* 表示最终的、不可变的意思。
* (1)修饰变量:
*     修饰实例变量或者局部变量,不能被重新赋值,一旦被赋值就不能修改
*      注意:final修饰的实例变量必须要指定初值,系统不会给final修饰的实例变量默认值的。
*      修饰的引用数据类型,不能重新指向新的地址。指向的引用变量的属性是可以修改的。
*    (2)修饰方法,不能被重写
*    (3)修饰的类,不能被继承
* */

接口的使用

java 复制代码
/*
* 接口:接口也是一种类型,跟普通的java类相似,只不过比较特殊,
* 一般用于作为一种规范或者标准让别的类来实现它。
* 如何定义一个接口? 使用interface关键字代替class
*   public interface 接口名{
*       属性和方法
* }
*(1)接口不能new实例化
* (2)接口当中一般只包含静态常量和抽象方法,
*     如果在接口当中定义了方法而没有加修饰符,默认就是抽象方法。
*     如果在接口当中定义了属性没有加修饰符,默认就是final、static的
*   注意:接口当中定义的属性必须要给初值,因为它是final static的
* (3)接口是一个完全抽象的概念,不能包含实例方法,
*  jdk1.8接口支持定义静态方法,1.8以后支持私有方法。
* (4)接口如何使用?
*    ①、普通类可以使用implements关键字来实现接口
*      public class A implements B{
*      }
*     实现接口的类必须要重写接口当中的抽象方法。
*    ②。一个类可以同时实现多个接口
*    ③、接口和接口之间可以继承吗?
*    可以。而且一个接口可以继承多个接口
*  总结:
*         普通类               抽象类 (半抽象)       接口(完全抽象)
* 成员:  属性和方法             属性和方法            属性、方法
* 属性:  静态、实例             静态、实例             静态常量
* 方法:  实例方法,静态方法      实例方法、静态方法       抽象方法,静态方法(jdk1.8之后的版本才有)
*                              抽象方法
* 继承:   单继承               单继承                  多继承
* 实例化:  可以                 不可以                 不可以
* (5)为什么要使用接口?
*       可以多继承,可以避免了java当中普通类单继承的限制,提高代码复用性和扩展性。
*         特别是在后期学习框架的过程大部分都是面向接口开发。
* */
相关推荐
蹊黎12 分钟前
C++中vector类的部分简单实现
开发语言·c++·visual studio
驭渊的小故事17 分钟前
MyBatis XML 开发实战:从配置到 CRUD 全解析
xml·java·mybatis
哦虎!5 小时前
【JavaEE】网络初识
java
for_ever_love__5 小时前
MySQL ORDER BY 排序优化:从 Using filesort 到索引有序扫描(含双路 / 单路排序原理)
java·mysql·优化·存储·by·order·filesort
程序猿追6 小时前
kotlin-retry 接入鸿蒙后,怎样确认它真的会停止重试
开发语言·kotlin·harmonyos
我是人✓6 小时前
Java文件上传三方式对比:从传统到SpringBoot
java·开发语言
智能直播6 小时前
网络RTMP拉流不卡顿、声音不同步,一文讲透缓冲区、时间戳
开发语言·ffmpeg·php·音视频·视频编解码
欣栀♡6 小时前
JVM 频繁 Full GC 先看日志括号里的 cause,jstat 的 FGC 在 JDK 8 上会骗人
java·jvm
IT研究室7 小时前
最新计算机毕业设计选题推荐-基于spring boot的葡萄酒文化宣传网站-网站-文档指导-Java-springboot
java·spring boot·课程设计
慧都小项7 小时前
MyEclipse 中创建和测试 JAX-RS REST 接口:从项目配置到 REST Explorer
java·restful·myeclipse·jax-rs