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 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 接口和抽象类总结 -> 正文阅读

[移动开发]接口和抽象类总结

目录

注意事项

抽象类细节

接口的细节

接口抽象类对比

相同点和不同点

Interfaces

Abstract classes


注意事项

????????测试环境jdk"1.8.0_91",不同jdk版本可能特性会不一样,请谨慎看待

抽象类细节

????????1、不能被实例化

????????2、不一定包含abstract/可以有自己的实现方法

????????3、abstract只能修饰类的方法

????????4、有abstract方法的类必定是抽象类

????????5、抽象类本质上还是类<继承了Object>

????????6、抽象方法不能有主体,即不能实现

????????7、如果一个类继承了抽象类,则它必须实现抽象类的**所有抽象方法**,除非它自己也声明为abstract类

????????8、不能使用private、final和static修饰

解释:
不能被final修饰很简单
    final修饰的类,是不能被重写的!
===============================
private
    只有本类可见<权限问题>子类是不可见的!
===============================
static
    抽象类不可以定义静态方法,主要有两个原因。 首先是抽象类和接口都不可以被实体化,不能实体化就没有内存,但是static 的方法跟随的是整个类,在实体化之前就已经被分配了内存,这两点相矛盾,所以不可以有abstract class 里不能有static method。

接口的细节

? ? ? ? 1、接口不能被实例化

? ? ? ? 2、接口中所有的方法是public方法<jdk版本要特别注意!>,你可以不使用abstract修饰<默认修饰是public abstract>

? ? ? ? 3、一个普通类实现接口就必须实现接口的所有方法<不包括默认>

? ? ? ? 4、抽象类实现接口,就可以不用实现接口的方法

? ? ? ? 5、一个类同时可以实现多个接口

接口可以多继承接口
接口是没有继承Object的

? ? ? ? 6、接口的属性只能是public static final/默认就是? ? ? ??

? ? ? ? 7、属性访问形式:接口名.属性

? ? ? ? 8、接口不能继承其他类,但可以继承多个别的接口

? ? ? ? 9、jdk1.8 接口的修饰符只能为public或default,jdk1.8(包括、之后)接口可以有默认实现方法,静态方法(这个不确定版本)

接口抽象类对比

抽象类接口
关键字abstractinterface
继承关系单继承,多实现可以多继承接口
访问修饰符

方法:

1.8以前默认protected

1.8是default

方法:

1.8以前public

1.8时public<默认>或default

有无实现方法1.8时default、static
实现方式extendsimplements
....

相同点和不同点

相同:

? ? ? ? 1、不可实例化

? ? ? ? 2、抽象方法都必须被子类覆盖

? ? ? ? 3、都可以使用extends继承自身(类型)类<接口且可以多继承>

不同点:

? ? ? ? 1、接口属性只能是public static final,Java8接口成员默认情况成员是public,抽象类成员可以是protected、private等,抽象方法不能为私有

? ? ? ? 2、Java 接口应该使用关键字“implements”来实现;Java 抽象类应该使用关键字“extends”进行扩展

? ? ? ? 3、接口可以继承接口(一个或多个),抽象类可以继承一个类或实现多接口

? ? ? ? 4、抽象类除了抽象方法还可以有非抽象方法,接口从java8开始有默认方法和静态方法

? ? ? ? 5、抽象类可以实现接口,但是接口不能扩展抽象类

注意:如果一个抽象类实现了接口,则不必实际定义接口的方法。该要求可以推迟到继承/子具体类

......

详情:Difference and Similarities between Interface and Abstract Class in Java – FreshlyBuilt.com

Interfaces

An interface is a?contract: The person writing the interface says, "hey, I accept things looking that way", and the person using the interface says "OK, the class I write looks that way"

An interface is an empty shell. There are only the signatures of the methods, which implies that the methods do not have a body. The interface can't do anything. It's just a pattern.

Abstract classes

Abstract classes, unlike interfaces, are classes. They are more expensive to use, because there is a look-up to do when you inherit from them.

Abstract classes look a lot like interfaces, but they have something more: You can define a behavior for them. It's more about a person saying, "these classes should look like that, and they have that in common, so fill in the blanks!".

参考链接:

Java中为什么抽象类不能定义抽象的static方法? - 知乎

oop - What is the difference between an interface and abstract class? - Stack Overflow

【零基础 快速学Java】韩顺平 零基础30天学会Java_哔哩哔哩_bilibili

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-04-30 08:51:08  更:2022-04-30 08:52:18 
 
开发: 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/24 23:48:59-

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