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 相关文章推荐
解决tk mapper 通用mapper的bug问题
Jun 16 Java/Android
Java数据结构之链表相关知识总结
Jun 18 Java/Android
SpringAop日志找不到方法的处理
Jun 21 Java/Android
Java并发编程必备之Future机制
Jun 30 Java/Android
Mybatis-plus在项目中的简单应用
Jul 01 Java/Android
SpringMVC 整合SSM框架详解
Aug 30 Java/Android
JPA 通过Specification如何实现复杂查询
Nov 23 Java/Android
深入浅出讲解Java8函数式编程
Jan 18 Java/Android
spring注解 @PropertySource配置数据源全流程
Mar 25 Java/Android
Java数据结构之堆(优先队列)
May 20 Java/Android
Android Gradle 插件自定义Plugin实现注意事项
Jun 16 Java/Android
Java获取字符串编码格式实现思路
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
MySQL相关说明
2007/01/15 PHP
php上传文件的增强函数
2010/07/21 PHP
PHP中集成PayPal标准支付的实现方法分享
2012/02/06 PHP
php获取文章上一页与下一页的方法
2014/12/01 PHP
浅析PHP文件下载原理
2014/12/25 PHP
ThinkPHP函数详解之M方法和R方法
2015/09/10 PHP
JavaScript版代码高亮
2006/06/26 Javascript
JS分割字符串并放入数组的函数
2011/07/04 Javascript
JQuery中使用.each()遍历元素学习笔记
2014/11/08 Javascript
JavaScript 学习笔记之基础中的基础
2015/01/13 Javascript
JavaScript使用cookie实现记住账号密码功能
2015/04/27 Javascript
js中最容易被忽视的事件问题大总结
2016/05/15 Javascript
js实现弹窗居中的简单实例
2016/10/09 Javascript
微信小程序开发一键登录 获取session_key和openid实例
2016/11/23 Javascript
jquery 禁止鼠标右键并监听右键事件
2017/04/27 jQuery
基于react框架使用的一些细节要点的思考
2017/05/31 Javascript
JavaScript中的return布尔值的用法和原理解析
2017/08/14 Javascript
详解小程序之简单登录注册表单验证
2019/05/13 Javascript
vue elementui el-form rules动态验证的实例代码详解
2019/05/23 Javascript
nodejs中实现修改用户路由功能
2019/05/24 NodeJs
解决node.js含有%百分号时发送get请求时浏览器地址自动编码的问题
2019/11/20 Javascript
微信小程序图片自适应实现解析
2020/01/21 Javascript
vue单元格多列合并的实现
2020/11/26 Vue.js
微信小程序实现电影App导航和轮播
2020/11/30 Javascript
[01:32]2014DOTA2西雅图邀请赛 CIS我们有信心进入正赛
2014/07/08 DOTA
python获取list下标及其值的简单方法
2016/09/12 Python
python字符串,数值计算
2016/10/05 Python
解决pycharm每次新建项目都要重新安装一些第三方库的问题
2019/01/17 Python
python自定义函数实现最大值的输出方法
2019/07/09 Python
html5 Canvas画图教程(7)—canvas里画曲线之quadraticCurveTo方法
2013/01/09 HTML / CSS
瑞贝卡·明可弗包包官网:Rebecca Minkoff
2016/07/21 全球购物
Veronica Beard官网:在酷、经典和别致之间找到了平衡
2018/01/11 全球购物
授权委托书范文
2014/07/31 职场文书
反腐倡廉警示教育活动心得体会
2014/09/04 职场文书
中小学生学籍证明
2014/10/25 职场文书
幼儿教师2014年度工作总结
2014/12/16 职场文书