IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java基础-抽象和接口 -> 正文阅读

[Java知识库]Java基础-抽象和接口

一、抽象类和抽象方法:

1、abstract关键字的使用

(1)abstract:抽象的

(2)abstract可以用来修饰的结构:类、方法

? a、abstract修饰类:抽象类

? ? ? ? 》此类不能是实例化?

? ? ? ? 〉抽象类中一定有构造器,便于子类实例化时调用(涉及:子类对象实例化的全过程)

? ? ? ??》开发中,都会提供抽象类的子类,让子类对象实例化,完成相关的操作?

b、abstract修饰方法:抽象方法

? ? ? ? 》抽象方法只有方法的声明,没有方法体

? ? ? ? ?〉包含抽象方法的类一定是抽象类;反之,抽象类中可以没有抽象方法

? ? ? ? 》若子类重写了父类中的所有抽象方法(直接父类和间接父类)后,此子类方可实例化;若子类没有重写父类中的所有抽象方法后,次子类也是一个抽象类,子类需要使用abstract修饰

如下,继承中,可以重写抽象方法中的方法,加上方法体;也可以在抽象类前面加上abstract,这两个方式来继承抽象方法.

?2、抽象的应用场景

抽象类是用来模型化那些父类无法确定全部实现,而是由其子类提供具体实现的对象的类:父类提供抽象方法,子类可以显示的去继承,重写抽象方法

?3、abstract使用中的注意点

(1)abstract不能用来修饰:属性、构造器等结构

(2)abstract不能用来修饰私有方法、静态方法、final的方法、final的类

4、创建抽象类的匿名子类对象

??

二、接口:interface

1、接口的使用

(1)接口使用interface来定义

(2)java中,接口和类是并列的两个结构

(3)如何定义接口:定义接口中的成员

? ? ? ? (3.1)JDK7及以前:只能定义全局敞亮和抽象方法

? ? ? ? ? ? ? ? 》全局常量:public static final的,但是书写时可以省略不写

?? ? ? ? ? ? ? ? 〉抽象方法:public abstract的

? ? ? ? ? ? ?

????????(3.2)JDK8及以后:除了定义全局常量和抽象方法外,还可以定义静态方法、默认方法(略)????????

? ? ? ? (3.3)接口中不能定义构造器,意味着接口不可以实例化?

? ? ? ? ?(3.4)java开发中,接口都是通过类去实现(implement)的方式来使用

? ? ? ? ? ? ? ? 如果实现类覆盖了接口中的所有抽象方法,则此实现类就可以实例化

? ? ? ? ? ? ? ? 如果实现类没有覆盖接口中的所有抽象方法,则此实现类仍然是一个抽象类

2、接口的多实现和接口的继承性:

(1)可以实现多个接口弥补了java单继承的局限性

? ? ? ? 格式:class AA extends BB implements CC,DD,EE

(2)接口和接口之间叫做继承,并且可以多继承

?

接口和类之间叫实现关系;类和类之间叫做继承关系

(3)接口的具体使用,体现多态性

(4)接口实际上可以看做是一种规范

eg:USB体现了一种规范;如下也体现了接口使用上的多态性

?eg2:

面向接口编程

(5)、 创建接口匿名实现类的对象

?3、接口的应用

(1)代理模式:

eg:

4、java8中接口的新特性

除了定义全局常量和抽象方法外,还可以定义静态方法、默认方法(略)???

(1)接口中定义的静态方法,只能通过接口来调用

(2)通过实现类的对象可以调用接口中的静态方法?;如果实现类重写了接口的默认方法,调用时,仍然调用的是重写以后的方法? ??

eg:

?eg2:接口类中定义了method3,实现一个父类,也定义了method3,现在让其继承于父类的同时去实现接口

(3)结论:如果子类(或实现类)继承的父类和实现的接口中声明了同名同参数的方法,那么子类在没有重写此方法的情况下,默认调用的是父类中的同名同参数的方法.---》类优先原则

?

结果:

(4)如果实现类实现了多个接口,而这多个接口中定义了同名同参数的默认方法,那么在实现类没有重写此方法的情况下,会报错,这叫做接口冲突;那么就需要在实现类中重写此方法

eg:新增一个文件,下面没有父类,但是有多个接口,下面会报错

?

?解决报错:在实现类中重写此方法

如果有父类也不会报错???

(5)如何在子类(实现类)的方法中调用父类、接口中被重写的方法

?5、内部类的分类

(1)、java中允许将一个类A声明在另一个类B中,则类A就是内部类,类B称为外部类

(2)、内部类的分类:成员内部类(直接在类内定义一个类)?VS 局部内部类(方法类,代码块内,构造器内)

??

(3)成员内部类:

? ? ? ? 一方面,作为外部类的成员

? ? ? ? ? ? ? ? 》调用外部内的结构

? ? ? ? ? ? ? ? 〉可以被static修饰

? ? ? ? ? ? ? ? 》可以被四种不同的权限修饰(private,protect,default,public)

? ? ? ? 另一方面,作为一个类

? ? ? ? ? ? ? ? 》类内可以定义属性、方法、构造器

? ? ? ? ? ? ? ? ?〉可以用final修饰,表示此类不可被继承,言外之意,不使用final就可以被继承

? ? ? ? ? ? ? ? 》可以被abstract修饰

(4)关注一下3个问题

a、如何实例化成员内部类的对象

eg:在上面截图代码的基础上:

b、如何在成员内部类中区分调用外部类的结构

?c、 开发中局部内部类的使用

方式二:匿名内部类 :创建接口匿名实现类的匿名对象

(5)局部内部类使用注意点(安卓开发需要特别注意):

?a、局部内部类的方法(show())中,如果调用局部内部类所声明的方法(method())中的局部变量的话,要求此局部变量声明为final的.(在jdk8以上,默认加上了final,jdk7下会报错)

?

?

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-09-10 10:43:56  更:2021-09-10 10:43:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 16:43:26-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码