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实现简易的分词器功能
Jun 15 Java/Android
Java基础-封装和继承
Jul 02 Java/Android
SpringBoot SpringEL表达式的使用
Jul 25 Java/Android
一篇文章带你学习Mybatis-Plus(新手入门)
Aug 02 Java/Android
关于Spring配置文件加载方式变化引发的异常详解
Jan 18 Java/Android
关于ObjectUtils.isEmpty() 和 null 的区别
Feb 28 Java/Android
SpringBoot整合minio快速入门教程(代码示例)
Apr 03 Java/Android
Java 轮询锁使用时遇到问题
May 11 Java/Android
Android中的Launch Mode详情
Jun 05 Java/Android
Android开发手册Chip监听及ChipGroup监听
Jun 10 Java/Android
Java 中的 Lambda List 转 Map 的多种方法详解
Jul 07 Java/Android
Android移动应用开发指南之六种布局详解
Sep 23 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
长波有什么东西
2021/03/01 无线电
javascript 支持链式调用的异步调用框架Async.Operation
2009/08/04 Javascript
JS获取并操作iframe中元素的方法
2013/03/21 Javascript
js操作iframe兼容各种主流浏览器示例代码
2013/07/22 Javascript
js中的referrer返回上一页使用介绍
2013/09/26 Javascript
jQuery 属性选择器element[herf*='value']使用示例
2013/10/20 Javascript
jquery实现弹出层遮罩效果的简单实例
2014/03/03 Javascript
常用的jquery模板插件——jQuery Boilerplate介绍
2014/09/23 Javascript
JS实现三级折叠菜单特效,其它级可自动收缩
2015/08/06 Javascript
JS实现在状态栏显示打字效果完整实例
2015/11/02 Javascript
Node.js 应用跑得更快 10 个技巧
2016/04/03 Javascript
深入理解node exports和module.exports区别
2016/06/01 Javascript
jQuery中实现prop()函数控制多选框(全选,反选)
2016/08/19 Javascript
概述jQuery的元素筛选
2016/11/23 Javascript
深入浅析Vue组件开发
2016/11/25 Javascript
lhgcalendar时间插件限制只能选择三个月的实现方法
2017/07/03 Javascript
基于js文件加载优化(详解)
2018/01/03 Javascript
js Element Traversal规范中的元素遍历方法
2018/04/19 Javascript
JavaScript实现点击出现图片并统计点击次数功能示例
2018/07/23 Javascript
从0到1构建vueSSR项目之node以及vue-cli3的配置
2019/03/07 Javascript
微信小程序添加插屏广告并设置显示频率(一天一次)
2019/12/06 Javascript
使用Vue 自定义文件选择器组件的实例代码
2020/03/04 Javascript
Python数据分析之如何利用pandas查询数据示例代码
2017/09/01 Python
python3+PyQt5使用数据库表视图
2018/04/24 Python
在tensorflow中设置保存checkpoint的最大数量实例
2020/01/21 Python
详解Pycharm出现out of memory的终极解决方法
2020/03/03 Python
在python中list作函数形参,防止被实参修改的实现方法
2020/06/05 Python
Python+OpenCV图像处理——打印图片属性、设置存储路径、调用摄像头
2020/10/22 Python
波兰补充商店:Muscle Power
2018/10/29 全球购物
人事专员的职责
2014/02/26 职场文书
什么是就业协议书
2014/04/17 职场文书
婚礼新人答谢词
2015/01/04 职场文书
资金申请报告范文
2015/05/14 职场文书
2015年店长个人工作总结
2015/10/23 职场文书
Go遍历struct,map,slice的实现
2021/06/13 Golang
纯CSS3实现div按照顺序出入效果
2021/07/15 HTML / CSS