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 18 Java/Android
Java基础之this关键字的使用
Jun 30 Java/Android
Sleuth+logback 设置traceid 及自定义信息方式
Jul 26 Java/Android
SpringMVC 整合SSM框架详解
Aug 30 Java/Android
Spring Security中用JWT退出登录时遇到的坑
Oct 16 Java/Android
MyBatis自定义SQL拦截器示例详解
Oct 24 Java/Android
JVM的类加载器和双亲委派模式你了解吗
Mar 13 Java/Android
Java9新特性之Module模块化编程示例演绎
Mar 16 Java/Android
零基础学java之循环语句的使用
Apr 10 Java/Android
Android Studio实现简易进制转换计算器
May 20 Java/Android
springboot为异步任务规划自定义线程池的实现
Jun 14 Java/Android
springboot集成redis存对象乱码的问题及解决
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
一实用的实现table排序的Javascript类库
2007/09/12 Javascript
20款超赞的jQuery插件 Web开发人员必备
2011/02/26 Javascript
javascript弹出层输入框(示例代码)
2013/12/11 Javascript
点击弹出层效果&弹出窗口后网页背景变暗效果的实现代码
2014/02/10 Javascript
前端轻量级MVC框架CanJS详解
2014/09/26 Javascript
Jquery实现顶部弹出框特效
2015/08/08 Javascript
总结JavaScript设计模式编程中的享元模式使用
2016/05/21 Javascript
BootStrap入门教程(二)之固定的内置样式
2016/09/19 Javascript
jquery 动态增加,减少input表单的简单方法(必看)
2016/10/12 Javascript
微信小程序实战篇之购物车的实现代码示例
2017/11/30 Javascript
C#实现将一个字符转换为整数
2017/12/12 Javascript
Vue 父子组件的数据传递、修改和更新方法
2018/03/01 Javascript
nodejs实现套接字服务功能详解
2018/06/21 NodeJs
还不懂递归?读完这篇文章保证你会懂
2018/07/29 Javascript
react写一个select组件的实现代码
2019/04/03 Javascript
详解小程序毫秒级倒计时(适用于拼团秒杀功能)
2019/05/05 Javascript
React优化子组件render的使用
2019/05/12 Javascript
解决LayUI数据表格复选框不居中显示的问题
2019/09/25 Javascript
解决VUEX的mapState/...mapState等取值问题
2020/07/24 Javascript
三步搞定:Vue.js调用Android原生操作
2020/09/07 Javascript
Python自动登录126邮箱的方法
2015/07/10 Python
黑科技 Python脚本帮你找出微信上删除你好友的人
2016/01/07 Python
Python3操作Excel文件(读写)的简单实例
2019/09/02 Python
在win64上使用bypy进行百度网盘文件上传功能
2020/01/02 Python
Saks Fifth Avenue澳洲/亚太地区:萨克斯第五大道精品百货店
2019/06/09 全球购物
CK加拿大官网:Calvin Klein加拿大
2020/03/14 全球购物
总裁秘书岗位职责
2013/12/04 职场文书
《最后的姿势》教学反思
2014/02/27 职场文书
食堂标语大全
2014/06/11 职场文书
承诺书模板
2014/08/30 职场文书
小班教师个人总结
2015/02/05 职场文书
乡镇法制宣传日活动总结
2015/05/05 职场文书
2015年领导干部廉洁自律工作总结
2015/05/26 职场文书
锦旗赠语
2015/06/23 职场文书
Python代码风格与编程习惯重要吗?
2021/06/03 Python
python之json文件转xml文件案例讲解
2021/08/07 Python