Java由浅入深通关抽象类与接口(上篇)


Posted in Java/Android onApril 26, 2022

1.抽象类

1.1抽象类概念

我们都知道对象是通过类来进行描述的,但是不是说所有的类都是用来描述对象的

一个类的类中没有足够的信息来描述一个具体的对象,这便是抽象类

抽象类的关键字:abstract

1.2抽象方法

首先还是看看之前写过的类:

class Plant {
    String name;
    String source;
    String genus;
    public void trait() {
        System.out.println("父类方法");
    }
}
class Tree extends Plant {
    @Override
    public void trait() {
        System.out.println("子类方法");
    }
}

既然trait方法是重写的方法,那么父类的trait根本就没有实现的必要,所以我们可以将其改成抽象方法

注意:抽象类可以没有抽象方法,但抽象方法必须在抽象类里面

abstract class Plant {
    String name;
    String source;
    String genus;
    public abstract void trait();
}
class Tree extends Plant {
    @Override
    public void trait() {
        System.out.println("子类方法");
    }
}

Java由浅入深通关抽象类与接口(上篇)

 1.3抽象类的细节

1.抽象类是用于被继承的,所以无法实例化,除这点外它和普通的类没有区别

2.抽象类里面可以没有抽象方法,但抽象方法一定要在抽象类中

3.一个普通类继承抽象类,要重写抽象类里面所有的抽象方法

4.抽象类可以继承抽象类,此时不需要重写抽象方法

5.final无法修饰抽象类和抽象方法

6.抽象方法不能使用private和static修饰

可能会有人觉得奇怪:普通类也可以作为父类被继承,为什么还要再弄一个抽象类出来?

我们不妨假设一个场景:你在实例化对象的时候实例化了父类对象,如下:

public static void main(String[] args) {
        Plant tree=new Plant();
        tree.trait();
    }

如果父类是普通类的话,此时编译器不会报错,直接调用父类的方法

如果父类是抽象类,因为抽象类无法被实例化,所以编译器会直接报错,这样问题就能更早被发现

2.接口

2.1接口概念

所谓接口就是公共的行为规范准则,比如说A4纸,A4纸的大小是210mm*297mm,那么你就只能按照这个规格来进行生产

在Java中接口就可以看成是多个类的公共规范,是一种引用类型数据

接口关键字:interface

2.2接口的细节

接口同样有一些需要注意的事项:

1.接口也是用来被其它类实现的,同样不能实例化

2.接口里面的方法只能是抽象方法,默认是public static修饰

3.接口的成员变量默认是静态常量,所以必须初始化

4.接口被实现所使用的关键字为implements,类实现接口依旧要重写接口中所有的抽象方法

5.接口不能有构造方法和静态代码块

6.接口继承接口使用extends

7.创建接口时,接口的命名一般以大写的字母“I”开头(建议,非硬性要求)

8.接口也可以实现多态

接口在Java中最主要的作用就是实现多继承

Java中一个类只能继承一个父类,但它可以实现多个接口

抽象类和接口有相似的地方,不过二者之间最本质的区别就是抽象类可以有普通成员方法和普通成员变量,而接口中的方法只能是抽象方法

抽象类和接口介绍完毕,下一篇会介绍Java中一些比较重要的接口

到此这篇关于Java由浅入深通关抽象类与接口上的文章就介绍到这了!

Java/Android 相关文章推荐
解析Java中的static关键字
Jun 14 Java/Android
Spring Data JPA使用JPQL与原生SQL进行查询的操作
Jun 15 Java/Android
SpringCloud Alibaba项目实战之nacos-server服务搭建过程
Jun 21 Java/Android
Java循环队列与非循环队列的区别总结
Jun 22 Java/Android
Spring Cloud Gateway去掉url前缀
Jul 15 Java/Android
spring cloud gateway中如何读取请求参数
Jul 15 Java/Android
MyBatis自定义SQL拦截器示例详解
Oct 24 Java/Android
Java9新特性对HTTP2协议支持与非阻塞HTTP API
Mar 16 Java/Android
详解Spring Security中的HttpBasic登录验证模式
Mar 17 Java/Android
Android超详细讲解组件ScrollView的使用
Mar 31 Java/Android
java版 联机五子棋游戏
May 04 Java/Android
Java实现注册登录跳转
Jun 16 Java/Android
Mybatis-Plus 使用 @TableField 自动填充日期
Apr 26 #Java/Android
Java 写一个简单的图书管理系统
Apr 26 #Java/Android
Android使用EventBus发送消息,Fragment中接收消息的方法会执行多次
Apr 24 #Java/Android
Spring Boot 使用 Spring-Retry 进行重试框架
Apr 24 #Java/Android
Android在Sqlite3中的应用及多线程使用数据库的建议
Apr 24 #Java/Android
Android开发 使用文件储存的方式保存QQ密码
Apr 24 #Java/Android
IDEA 2022 Translation 未知错误 翻译文档失败
You might like
PHP实现MVC开发得最简单的方法――模型
2007/04/10 PHP
探讨:array2xml和xml2array以及xml与array的互相转化
2013/06/24 PHP
浅析Apache中RewriteCond规则参数的详细介绍
2013/06/30 PHP
PHP中对缓冲区的控制实现代码
2013/09/29 PHP
php中的filesystem文件系统函数介绍及使用示例
2014/02/13 PHP
讲解WordPress中用于获取评论模板和搜索表单的PHP函数
2015/12/28 PHP
Convert Seconds To Hours
2007/06/16 Javascript
Dojo 学习要点
2010/09/03 Javascript
JS定时器实例
2013/04/17 Javascript
Extjs4中tree的拖拽功能(可以两棵树之间拖拽) 简单实例
2013/12/08 Javascript
JavaScript DOM进阶方法
2015/04/13 Javascript
cocos2dx骨骼动画Armature源码剖析(三)
2015/09/08 Javascript
BootStrap Table对前台页面表格的支持实例讲解
2016/12/22 Javascript
详解Angular的内置过滤器和自定义过滤器【推荐】
2016/12/26 Javascript
vue单个组件实现无限层级多选菜单功能
2018/04/10 Javascript
node实现的爬虫功能示例
2018/05/04 Javascript
解决Mac安装thrift因bison报错的问题
2018/05/17 Javascript
微信小程序实现文字跑马灯
2020/05/26 Javascript
浅谈Vue.js中如何实现自定义下拉菜单指令
2019/01/06 Javascript
Vue使用zTree插件封装树组件操作示例
2019/04/25 Javascript
D3.js(v3)+react 实现带坐标与比例尺的散点图 (V3版本)
2019/05/09 Javascript
vue el-tree 默认展开第一个节点的实现代码
2020/05/15 Javascript
python 中的列表解析和生成表达式
2011/03/10 Python
Python使用openpyxl读写excel文件的方法
2017/06/30 Python
Python 获取当前所在目录的方法详解
2017/08/02 Python
Python实现的rsa加密算法详解
2018/01/24 Python
python保存二维数组到txt文件中的方法
2018/11/15 Python
在python中实现强制关闭线程的示例
2019/01/22 Python
PyQt5 QTableView设置某一列不可编辑的方法
2019/06/25 Python
new_zeros() pytorch版本的转换方式
2020/02/18 Python
为什么称python为胶水语言
2020/06/16 Python
铁路工务反思材料
2014/02/07 职场文书
2016年大学生就业指导课心得体会
2015/10/09 职场文书
2016入党积极分子党课培训心得体会
2016/01/06 职场文书
SQL Server连接查询的实用教程
2021/04/07 SQL Server
「海贼王」112.9万粉丝纪念图标公布
2022/03/21 日漫