2022-7-26面向对象 抽象方法、接口 、栈与队列
抽象方法 关键字:abstract
当编程中,父类和子类的方法想要达成一个约定,让子类的方法按照父类规定来定义时,我们就可以使用抽象方法。
- 抽象方法具体约束了:方法的返回值,访问权限,参数列表,抽象方法没有写的函数体,则需要在子类“重写”时去定义。
抽象方法定义时,不能有方法体(没有花括号)
普通的方法
public void eat(){
}
抽象方法
public abstract void eat();
-
类的权限修饰符必须是public或者protected
(因为要和子类达成约定,所以如果是类的抽象,,如果是private的话,不能被其他类继承,抽象九没有意义。抽象类必须有子类,使用extends继承,一个类只能继承一个抽象类) -
抽象类中可以没有抽象方法,但是抽象方法必须在抽象类中
-
抽象类是不能被实例化的。抽象类不能创建对象,需要依靠子类采用向上转型的方式处理
一个类如果继承了一个抽象类,就必须重写这个抽象类所有的抽象方法((如果子类没有实现父类的抽象方法,必须将子类也定义为abstract))
接口 关键字:interface
比抽象类更高级的抽象。
public interface 类名
接口中结构的特点:
- 接口中的抽象方法默认是public abstract,我们推荐就省略了。
- 接口中的常量默认是public static final,我们推荐就省略了。
- 接口中的结构必须是public。
接口的实现
在Java中,一个类只能继承一个类,但是一个类可以实现多个接口。
类实现接口的语法:
public class 类名 implements 接口类
与抽象类一样,如果一个类实现了一个接口,它需要重写接口中所有的方法。
今日面试题:
1.继承抽象类和实现接口的异同。
相同点:
- 都不能被实例化
- 接口的实现类或者抽象的子类都必须实现类接口或者继承了抽象才可以被实例化
- 子类需要重写抽象父类,接口类中的所有方法。
不同点:
- 接口只有类的定义,没有方法。而抽象类既可以定义类,也可以定义方法
- 实现接口的关键字为 implements,继承抽象类的关键字为 extends。一个类可以实现多个接口,但一个类只能继承一个抽象类。所以,使用接口可以间接地实现多重继承。
栈和队列
栈和队列是两种操作受限的线性:
- 栈的插入和删除只允许在表的尾端进行(在栈中叫做“栈顶”),满足FILOFirst In Last Out;
- 队列只允许在表位插入元素,在表头删除元素,FIFO First In First Out
栈与队列的相同点:
- 都是线性结构
- 插入操作都是在表尾进行
- 都可以通过顺序结构和链式结构实现。
栈与队列的不同点:
- 队列,先进先出,栈先进后出
总结:
数据结构!!!!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效