2022-07-26 第十组 Myy 学习笔记_面向对象_抽象+接口

抽象类和接口

Java中,除了类,还有抽象类和接口。

抽象方法,没有大括号,没有方法体。

抽象方法,存在的意义是什么? --> 根本意义,约定。自定义的规则。

抽象方法到底约定了什么,规定了什么,定了哪些规则? --> 约定了返回值,访问权限,参数列表,需要在重写的时候去定义方法体

约定大于配置,配置大于编码。

(抽象方法必须在一个抽象类里面abstract)

抽象类的特点/规则

1、当我们定义一个抽象类,这个抽象类中可以有哪些结构?

--> 属性,成员方法,构造器,抽象方法,常量

2、抽象类里能不能没有抽象方法?

--> 抽象类可以没有抽象方法

3、抽象类是不能被实例化的。

--> 抽象类不能创建对象

4、抽象类的构造器存在的意义

--> 为了约定子类的构造器必须和父类要匹配

5、一个类如果继承了一个抽象类,就必须重写这个抽象类的所有的抽象方法

abstract能修饰什么?

==》类,方法

  • 抽象方法能不能用private修饰?-->不能,abstract和private不能放在一起。开发中,抽象方法基本上都是public。

  • 抽象方法能不能用final修饰?-->不能,用final修饰的方法时不允许重写。

  • 抽象类能不能用final修饰?-->不能,用final修饰的类是不允许被继承的。

总结一下:

1、抽象方法必须是public或者protected(因为如果是private,不能被子类继承便无法实现该方法),默认情况下是可以的。(默认情况其实就是public)

2、抽象类不能被直接实例化,需要依靠子类向上转型的方式处理。

3、抽象类必须有子类,使用extends继承,一个类只能继承一个抽象类。

4、子类(如果不是抽象类)则必须重写抽象类中的所有抽象方法。(如果子类没有实现父类的抽象方法,必须将子类也定义为abstract)

 

public Double area(Double ... args) {}

其中Double ... args为不定长参数。

接口

比抽象类更高级的抽象

接口声明:使用interface关键字,public interface Ch02

  • JDK1.7之前:接口中只能定义抽象方法,不能有属性,不能有方法。(静态的常量)
  • JDK8及以后:接口中只能定义抽象方法,不能有属性,可以有默认方法和静态方法、静态常量。
  • JDK7 -- JDK8:默认方法、静态方法。

接口中结构的特点:

接口中的抽象方法默认是public abstract,我们推荐就省略。接口中的常量默认是public static final,我们推荐就省略。

==》接口中的结构必须是public

接口可以被实现,实现类。

比如说A类 implements接口,那我们就说A是这个接口的实现类。👇[前面的实现后面的]

 

如果一个类实现了一个接口,它就需要重写接口中所有的抽象方法。

 

接口和继承的区别:

实现接口是可以多继承的,继承只能单继承开发中,如果一件事情可以通过继承和实现接口来解决问题,优先选择使用接口解决。

 

接口存在的意义:约定。

多态的前提条件:

1、继承,实现;2、重写方法;3、父类---子类,接口---实现类

面向对象编程、面向接口编程、面向切面编程

匿名实现类:

 

 

 

面试题:

1、继承抽象类和接口的异同;2、抽象类和接口的区别。

面试题:

在Java中只有单继承?-->在Java中是存在多继承的,发生在接口之间。Java类与类之间只有单继承。

结束:封装、继承、多态、抽象

 

 

数据结构:栈和队列

 

思想和特点 --> 重点

 

栈和队列:栈和队列是两种操作受限的线性表

 

这种受限表现在:

栈的插入和删除只允许在表的尾端进行(在栈中叫做“栈顶”)满足FILO(First In Last Out先进后出)。

队列只允许在表位插入元素,在表头删除元素FIFO(First In First Out先进先出)

 

栈和队列的相同点:1都是线性结构 2插入操作都是在表尾进行 3都可以通过顺序结构和链式结构实现

栈和队列的不同点:1栈是先进后出,队列是先进先出

 

入队、出队

结合昨天的链表来,调用其中方法

 

入栈、出栈

 

 

 

 

 ThatAll-->重点总结

1.抽象abstract关键字

抽象类的特点

abstract能修饰哪些结构(类和方法)

抽象方法的特点

2.接口。JDK7 - JDK8的有什么改变

3.面试题:继承类和实现接口的异同?抽象类和接口的区别

4.多态的补充说明

5.匿名实现类

 

重点:结合多态,参数的传递,配合instanceof使用

 

在能够使用多态表示对象的情况下,尽量使用多态。

 

栈和队列:建立在两个最基础的数据结构的基础上构建出来的两个受限制的线性表。

 

 

面向对象四大特征:封装、继承、多态、(抽象)

posted @   Myy蒋  阅读(40)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
点击右上角即可分享
微信分享提示