Java宝典-抽象类和接口

目录

  • 1. 抽象类
    • 1.1 抽象类的概念
    • 1.2 抽象类的语法
    • 1.3 抽象类的特点
  • 2. 接口
    • 2.1 接口的概念
    • 2.2 接口的语法
    • 2.3 接口的特点
    • 2.4 实现多个接口
    • 2.5 接口的继承
  • 3. 接口使用案例

铁汁们好,今天我们学习抽象类和接口~

1. 抽象类

1.1 抽象类的概念

什么是抽象类?在面向对象中,如果一个类中的信息并不能完整地描述一个对象,这样的类就是抽象类,拿我们之前的例子:
在这里插入图片描述

Dog类和Cat类继承了Animal类,Animal中有eat方法,但是猫除了吃,还能抓老鼠,如果在Animal中加上抓老鼠的方法,那么狗继承了Animal,也就是说狗也能抓老鼠,这显然有点不现实,所以Animal并不能完整的描述一个对象,此时我们可以把它设计成抽象类,那么如何设计?

1.2 抽象类的语法

当一个类被abstract关键字修饰时,这个类就是抽象类

abstract class Animal{
	//...
}

注意事项:
1.抽象类中可以包含普通的方法和属性,也可以包含构造方法
2.如果一个方法被abstract修饰,表示该方法是抽象方法,抽象方法不能有具体的实现,如

abstract class Animal{
	public abstract void func();
}

1.3 抽象类的特点

抽象类有以下特点:

  1. 抽象类不能实例化:不能通过new来进行实例化
Animal animal = new Animal();
//错误的,抽象类不能实例化
  1. 抽象类中的抽象方法不能是private修饰的

  2. 抽象类中的抽象方法不能有具体实现,是因为抽象类的作用主要是被继承,子类需要重写抽象类中的抽象方法

abstract class Animal{
	public abstract void func(){}//错误的,花括号就表示这个方法有具体实现
}
  1. 抽象方法不能是final和static修饰的(因为要被子类重写)
  2. 抽象类中可以没有抽象方法,但是抽象方法一定是在抽象类当中才能出现

2. 接口

2.1 接口的概念

接口是啥?在java中,可以认为是很多个类的公共规范,接口是一种引用数据类型.比如USB接口,安卓充电器接口,这些接口都是统一大小的,只要符合规范,大家都能使用它.

2.2 接口的语法

在java中,接口的定义和类的定义格式比较类似,将class替换成interface关键字即可

public interface 接口名{
//....
}

2.3 接口的特点

  1. 接口也不能实例化
  2. 接口中的方法都是抽象方法,是被public abstract修饰的,不能被其他修饰符修饰
  3. 接口中的方法不能有具体实现,只有加了default或者static的方法才能实现
    例如:
interface IA {
    static void fun1() {
        System.out.println("static");
    }
    default void fun2() {
        System.out.println("default");
    }
}
  1. 接口中的成员变量默认是public static final修饰的,所以必须赋初始值
  2. 接口中的方法和变量一般不加修饰符,这样代码更加美观,清晰
interface IA {
    int A = 10;
    void func();
}
  1. 接口中不能出现静态代码块/构造方法/实例代码块
  2. 重写接口中的方法时,重写的方法只能是public的
  3. 当一个类需要实现某个接口时,使用implements关键字,而且这个类必须重写接口的方法
interface IA {
    int A = 10;
    void func();
}
class A implements IA{
    @Override
    public void func() {
        
    }
}

2.4 实现多个接口

java中不能有多继承(一个类继承多个类),但是一个类可以实现多个接口,接口很好的解决了java不能多继承这个问题

interface IA {
    //...
}

interface IB {
    //...
}

class A implements IA, IB {
    //...
}

2.5 接口的继承

接口之间也可以继承,接口之间的继承同样使用extends

interface IA {
    //...
}

interface IB extends IA {
    //...
}

3. 接口使用案例

父类Animal(抽象类)

public abstract class Animal {
    protected String name;
    protected int age;
    public Animal(String name, int age) {
        this.age = age;
        this.name = name;
    }
}

IFly接口

public interface IFly {
    void Flying();
}

IRunning接口

public interface IRunning {
    void Running();
}

子类(实现了IFly, IRunning接口,并且重写了接口中的方法)

public class Duck extends Animal implements IFly, IRunning {
    public Duck(String name, int age) {
        super(name, age);
    }
    @Override
    public void Flying() {
        System.out.println(this.name + "正在飞");
    }
    @Override
    public void Running() {
        System.out.println(this.name + "正在跑");
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/445966.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Leetcode】top 100 双指针

283 移动零 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 分析:双指针初始为0;left指针找零值,right指针找非零值;由于需要保持非零元素的相对顺序&#xff0c…

02-组件化编程与Vu额 Click脚手架

1.Vue组件化编程(只有1个数字是一级标题) 1.1 模块与组件、模块化与组件化(两个数字组成是二级标题) 1.1.1模块(三个数字是三级标题 依次类推) 理解:向外提供特定功能的 js 程序,一般就是一个 js 文件为什么:js 文件很多很复杂作用&#xf…

【性能测试】性能测试各知识第1篇:性能测试大纲【附代码文档】

性能测试完整教程(附代码资料)主要内容讲述:性能测试大纲。。。。。。。。。。。。。。 全套笔记资料代码移步: 前往gitee仓库查看 感兴趣的小伙伴可以自取哦,欢迎大家点赞转发~ 性能测试大纲 |序号|阶段|概述| |--…

【C++】三大特性之继承

1 继承的概念及定义 1.1 继承的概念 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展、增加功能,这样产生新的类,称派生类(或子类)。而被继承的…

【NR 定位】3GPP NR Positioning 5G定位标准解读(九)-增强的小区ID定位

前言 3GPP NR Positioning 5G定位标准:3GPP TS 38.305 V18 3GPP 标准网址:Directory Listing /ftp/ 【NR 定位】3GPP NR Positioning 5G定位标准解读(一)-CSDN博客 【NR 定位】3GPP NR Positioning 5G定位标准解读(…

云服务器python版本冲突解决(awd平台搭建)

文章目录 yum和apt-getdockerpython环境问题 大家在使用python时,难免会使用他人的代码,自己是python3,而别人的是python2.我们直接运行会报错(比如print函数括号的问题)。但是去修改代码又很麻烦。这里给大家推荐conda。我以我搭建awd平台为…

toB开发范式

前言 B端开发,也被称为后台开发或者企业级开发,是针对企业或者组织的业务需求进行的软件开发。在 B 端开发中,我们通常关注的是系统的功能性、稳定性、可扩展性以及安全性,从面向过程编程 -> 面向对象编程 组合式编程 以下是…

【谈一谈】并发_Synchronized

Synchronized 又到周末了,最近的话(有点子小日子不好过,哈哈哈!~)但是,我还是报之以歌哈哈哈 本次写关于并发_Synchronized的优化以及底层实现原理 说说心里话~其实是非常的累,原因应该怎么说呢?我发现自己在如今的这家公司,我处于一种活多钱少以及关键现在给的或自己不想干,因…

新版Android Studio火烈鸟 在新建项目工程时 无法选java的语言模板解决方法

前言 最近下载最新版androidstudio时 发现不能勾选java语言模板了 如果快速点击下一步 新建项目 默认是kotlin语言模板 这可能和google主推kt语言有关 勾选1 如图所示 如果勾选 No Activity 这个模板 是可以选java语言模板的 但是里面没有默认的Activity 勾选2 和以前的用法…

关于安卓ZXing条码识别(一)引入源码

背景 从0-1引入安卓zxing,实现条码识别 环境 win10 as4 jdk8 引入 首先,官方网站,就是源码。链接 选择你要引入的分支,这里博主选择的是最近更新的分支,如下图: 上图中,1和2都需要引入&am…

车载诊断协议DoIP系列 —— 诊断报文和诊断报文应答传输层安全(TLS)

车载诊断协议DoIP系列 —— 诊断报文和诊断报文应答&传输层安全(TLS) 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师(Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 本就是小人物,输了就是输了,不要在意别人怎…

2021年江苏省职业院校技能大赛高职组 “信息安全管理与评估”赛项任务书

2021年江苏省职业院校技能大赛高职组 “信息安全管理与评估”赛项任务书 一、赛项时间:二、赛项信息三、竞赛内容:第一阶段任务书(300分)任务1:网络平台搭建(60分)任务2:网络安全设备…

23 经典卷积神经网络 LeNet【李沐动手学深度学习v2课程笔记】 (备注:提到如何把代码从CPU改到在GPU上使用)

目录 1. LeNet 2. 实现代码 3. 模型训练 4. 小结 本节将介绍LeNet,它是最早发布的卷积神经网络之一,因其在计算机视觉任务中的高效性能而受到广泛关注。 这个模型是由AT&T贝尔实验室的研究员Yann LeCun在1989年提出的(并以其命名&…

第十九天-分布式爬虫scrapy-redis

1.scrapy-redis介绍 1.scrapy框架程 2.分布式爬虫将多个主机组合起乱来,完成一个爬虫任务,快速高效的提高爬虫效率 3.scrapy-redis框架, 优点:1.加快项目的运行速度2.单节点不稳定不影响整个系统的稳定性 3.断点续爬 缺点&…

基于C++和Qt Creator实现的仿制网易云音乐播放器

目录 总体介绍开发环境技术介绍项目目录项目介绍特殊说明Gitee地址 总体介绍 仿照网易云播放器界面实现,目的在于锻炼C编程能力,熟练掌握Qt Creator各种组件的使用及样式设置、界面布局、QtPlugin技术、QXml读写XML文件方法、Qss文件的编写及使用等。 …

【笔记】全国大学生GIS应用技能大赛练习总结

该总结笔记为小组成员在练习完毕了历届题目后自我总结的结果,如有不足之处可以在评论区提出,排版较乱往谅解 绘制带空洞的面要素: 法一: 1、矢量化整个区域。2、矢量化空洞区域。3、将矢量化空洞区域进行合并(编辑器…

【MySql学习之路】window环境下MySql安装和安装过程中出现的问题

environment:windows software:mysql 本文主要分享mysql关系型数据库在干净的环境下,第一次安装以及在安装过程中出现的常见问题和解决方法。目前官网给出的安装包有两种格式,一个是msi格式,一个是zip格式的。很多人下了zip格式的解压发现没有setup.exe,面对一堆文件无从…

HTTPS如何保证数据传输的安全性 以及CA签发证书验签

暴力输出: 越看会越深入,睡前难以想通,后深入研究。得之。 有问题 请留言。 ----------追求内心的富足与平和。日行一善。 亓苏姑娘

面试经典150题【61-70】

文章目录 面试经典150题【61-70】61.旋转链表86.分隔链表104. 二叉树的最大深度100.相同的树226.翻转二叉树101.对称二叉树105.从前序与中序遍历序列构造二叉树106.从后序和中序遍历序列构造二叉树117.填充每个节点的下一个右侧节点指针II114.二叉树展开为链表 面试经典150题【…

【软考】图的遍历

目录 1. 概念2. 深度优先搜索2.1 说明2.2 步骤 3. 深度优先搜索例子3.1 无向图3.2 代码示例3.3 结果示例3.4 过程 4. 广度优先搜索4.1 说明4.2 步骤 5. 广度优先搜索例子5.1 无向图5.2 代码示例5.3 结果示例5.4 过程5.5 例题5.5.1 题目1 1. 概念 1.图的遍历是指从某个顶点出发…