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 相关文章推荐
SpringBoot 拦截器妙用你真的了解吗
Jul 01 Java/Android
Java 语言中Object 类和System 类详解
Jul 07 Java/Android
alibaba seata服务端具体实现
Feb 24 Java/Android
InterProcessMutex实现zookeeper分布式锁原理
Mar 21 Java/Android
Android超详细讲解组件ScrollView的使用
Mar 31 Java/Android
解决springboot druid数据库连接失败后一直重连的方法
Apr 19 Java/Android
引用计数法和root搜索算法以及JVM中判定对象需要回收的方法
Apr 19 Java/Android
Android开发之底部导航栏的快速实现
Apr 28 Java/Android
Java 死锁解决方案
May 11 Java/Android
Java完整实现记事本代码
Jun 16 Java/Android
Java多线程并发FutureTask使用详解
Jun 28 Java/Android
app场景下uniapp的扫码记录
Jul 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
火影忍者:这才是千手柱间和扉间的真正死因,角都就比较搞笑了!
2020/03/10 日漫
php实现的在线人员函数库
2008/04/09 PHP
php关闭warning问题的解决方法
2016/05/17 PHP
php中strlen和mb_strlen用法实例分析
2016/11/12 PHP
Google Suggest ;-) 基于js的动态下拉菜单
2006/10/11 Javascript
javaScript对象和属性的创建方法
2007/01/15 Javascript
CSDN轮换广告图片轮换效果
2007/03/27 Javascript
Save a File Using a File Save Dialog Box
2007/06/18 Javascript
js 判断checkbox是否选中的实现代码
2010/11/23 Javascript
一个JS的日期格式化算法示例
2013/07/31 Javascript
JS滚轮事件onmousewheel使用介绍
2013/11/01 Javascript
JS实现从网页顶部掉下弹出层效果的方法
2015/08/06 Javascript
js实现图片无缝滚动特效
2020/03/19 Javascript
浅谈javascript中的数据类型转换
2016/12/27 Javascript
支持移动端原生js轮播图
2017/02/16 Javascript
jQuery中hover方法搭配css的hover选择器,实现选中元素突出显示方法
2017/05/08 jQuery
vue中实现滚动加载更多的示例
2017/11/08 Javascript
在react中使用vuex的示例代码
2018/07/30 Javascript
Vue模板语法中数据绑定的实例代码
2019/05/17 Javascript
基于Vue+ElementUI的省市区地址选择通用组件
2019/11/20 Javascript
Python3下错误AttributeError: ‘dict’ object has no attribute’iteritems‘的分析与解决
2017/07/06 Python
对python中的控制条件、循环和跳出详解
2019/06/24 Python
python文件读写代码实例
2019/10/21 Python
python 函数中的参数类型
2020/02/11 Python
python操作docx写入内容,并控制文本的字体颜色
2020/02/13 Python
Pytorch 卷积中的 Input Shape用法
2020/06/29 Python
CSS3弹性伸缩布局之box布局
2016/07/12 HTML / CSS
MADE法国:提供原创设计师家具
2018/09/18 全球购物
英国最全面的橄榄球联盟门票网站:Live Rugby Tickets
2018/10/06 全球购物
美国相机和电子产品零售商:Beach Camera
2020/11/26 全球购物
Java如何调用外部Exe程序
2015/07/04 面试题
童装店创业计划书
2014/01/09 职场文书
委托公证书
2014/04/08 职场文书
2015年教务处干事工作总结
2015/07/22 职场文书
python使用torch随机初始化参数
2022/03/22 Python
Nginx代理Redis哨兵主从配置的实现
2022/07/15 Servers