【JAVA SE】抽象类和接口

✨✨欢迎大家来到Celia的博客✨✨

🎉🎉创作不易,请点赞关注,多多支持哦🎉🎉

所属专栏:JAVA

个人主页:Celia's blog~

目录

 引言

一、抽象类

1.1 抽象类的定义

 1.2 抽象方法

 1.3 抽象类的特性

1.4 抽象类的使用

 1.5 抽象类的作用

二、接口(interface、implements)

2.1 接口的定义

2.2 接口的特性

2.3 接口的使用

三、抽象类和接口的区别


 

 引言

  在面向对象的概念中,类是用来详细描述一个对象的,但若是一个类没办法完全的描述一个对象的时候,我们通常会把这个类设置成抽象的,也就是抽象类。

一、抽象类

1.1 抽象类的定义

  声明一个抽象类:

abstract class Animal{
//关键字        类名
    
}

我们用abstract关键字来声明一个抽象类,在这里有一些注意事项:

  1. 抽象类只能被继承,无法直接实例化对象。
  2. 抽象类中可以包含字段、方法、抽象方法 。
  3. 除以上外,抽象类的使用方法与其他类并无区别

 1.2 抽象方法

  抽象方法是没有具体实现过程的一个方法声明,由继承了抽象类的子类实现(方法重写)。现在我们在抽象类中声明一个抽象方法:

abstract class Animal{
    public abstract void eat();
// 修饰符   关键字                
}

 1.3 抽象类的特性

  • 如果一个抽象类中有抽象方法,一个子类继承了抽象类,如若不重新实现该抽象类中的抽象方法,该子类必须也是抽象的。
  • 如果普通类继承了抽象类,这个普通类必须实现该抽象类以及其子类的所有抽象方法。
  • 抽象类里可以没有抽象方法,但若是想要声明抽象方法,必须在抽象类里实现。
  • 抽象类中可以有构造方法,待到子类被实例化时,会调用父类(抽象类)的抽象方法。
  • 抽象方法不能被final、static修饰,原因是:final修饰的方法不能被重写、static修饰的方法依赖于类,不依赖于对象,故子类不可重写。

1.4 抽象类的使用

abstract class Animal{
    public String name;
    public int age;

    public Animal(String name, int age) { //抽象类的构造方法
        this.name = name;
        this.age = age;
    }

    public abstract void eat();//抽象方法
}

class Cat extends Animal{
    public Cat(String name, int age) {//子类的构造方法
        super(name, age);//调用抽象类的构造方法
    }
    @Override    //重写抽象类中的抽象方法
    public void eat() {
        System.out.println("吃猫粮...");
    }
}

 1.5 抽象类的作用

  • 相比于继承普通类,抽象类被要求只能被继承,这样有利于我们描述一个对象。
  • 相比于重写普通的方法,抽象类多了一层编译检验,要求子类必须重写抽象方法,这样更利于我们的开发,更有有利于多态的实现。

二、接口(interface、implements)

  顾名思义,现实中的接口:如USB接口、TypeC接口、有线耳机接口...从这些例子中可以看出:接口是一个统一的规范。在Java中,接口就是多个类的一种统一规范。

2.1 接口的定义

interface Ieat{
//关键字  接口名
} 

接口的定义与类的定义类似,只是把class换成了interface。一般情况下,接口名以大写的I来开头。

2.2 接口的特性

  • 接口也是一种引用类型。
  • 接口与抽象类一样,不能直接实例化对象,只能由一个类来实现一个接口。
  • 接口中的成员变量默认由 public static final 修饰。
  • 接口中的方法默认由 public abstract 修饰,也就是抽象方法。(其他修饰符都会报错)。
  • 严格来讲,接口不属于类,但是接口编译后的字节码文件的后缀也是class。
  • 接口中的方法不能由接口实现,只能由实现了该接口的类来实现。
  • 一个类只能继承一个父类,但是可以实现多个接口,多个接口之间由逗号隔开。
  • 一个类实现多个接口时,每个接口的抽象方法都要实现,否则必须设置为抽象类。
  • 接口和接口之间可以实现多继承(extends),表示接口的扩展。

2.3 接口的使用

interface Ieat{            //定义一个接口
    public static final int a = 1;
    public abstract void eat();
}
abstract class Animal{
    public String name;
    public int age;

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

}

class Cat extends Animal implements Ieat{  //继承了一个父类,实现了一个接口
    public Cat(String name, int age) {
        super(name, age);
    }
    @Override
    public void eat() {
        System.out.println("吃猫粮...");    //重写接口中的方法,实现多态
    }
}

我们用 interface这个关键字来定义一个接口,使用implements关键字来让一个类实现一个接口。

三、抽象类和接口的区别

  • 抽象类可以包含普通方法和普通字段,普通方法和普通字段可以被子类直接使用,不必重写(想重写也可以,没有强制要求)。
  • 接口中的方法都是抽象方法,实现了该接口的类必须重写接口中所有的抽象方法。 
  • 接口中的成员变量都是由public static final修饰,属于类变量,依赖于类的加载而被加载。且不可被修改。

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

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

相关文章

QT等比例缩放图片

1、这里使用QLabe控件显示图片,如下: label->setPixmap(QPixmap::fromImage(image_2)); 以上是直接原始大小来显示QImage image_2图片。 label->setAlignment(Qt::AlignCenter); 以上代码,是将显示的图片居中展示,默认…

使用git将本地文件上传到仓库+git常用指令

个人主页:Yang-ai-cao 一个小小搬砖人~~~~~ 目录 个人主页:Yang-ai-cao 一个小小搬砖人~~~~~ 配置 基本操作 分支操作 远程仓库 标签 撤销操作 日常操作示例 进阶操作 !!!!!&#…

【python】OpenCV—Merge Image

文章目录 np.hstack / np.vstackSlicecv2.addWeighted自定义渐变式叠加cv2.bitwise_not / cv2.bitwise_and / cv2.add np.hstack / np.vstack 利用 numpy 的 hstack 和 vstack,对图片进行拼接 import cv2 import numpy as nph, w 256,256 img1 cv2.resize(cv2.i…

企业内业务系统与Activiti流程引擎的结合(十一)

摘要:前文分享了企业内部系统集成Activiti的架构和API设计,这里再介绍下 bpmn 流程图的绘制以及与 流程图与bpm后台服务代码的结合点。 一、画流程图 以使用 eclipse 画流程图为例 1. 将 Activiti BPMN 插件安装到 eclipse 插件安装成本后的效果:新建向导中出现 Activiti…

干货分享 | TSMaster 中 Hex 文件编辑器使用详细教程

TSMaster 软件的 Hex 文件编辑器提供了文件处理的功能,这一特性让使用 TSMaster 软件的用户可以更便捷地对 Hex、bin、mot、s19 和 tsbinary 类型的文件进行处理。 本文重点讲述 TSMaster 中 Hex 文件编辑器的使用方法,该编辑器能实现将现有的 Hex、bin、…

Python 的 os 和 shutil 模块

大家好,在日常的编程工作中,处理文件和目录是一个非常常见的任务。无论是创建、复制、移动还是删除文件,这些操作都需要我们与文件系统进行交互。在 Python 中,有两个强大的模块可以帮助我们轻松地进行文件和目录操作,…

怎么判断护眼台灯真的有用吗?揭秘护眼台灯怎么选!

中国目前面临着严重的近视问题,各学段学生的近视率普遍偏高,且高度近视的占比也不容忽视。这不仅对学生的身体健康构成威胁,也对国家的经济社会可持续发展和国家安全构成潜在风险。随着时代的进步和教育的普及,儿童近视的问题已经…

私有仓库搭建

目前市面上比较常见的私有仓库搭建方法为: 通过 Sinopia 或 verdaccio 搭建(Sinopia 已经停止维护,verdaccio 是 Fork 自 Sinopia,基本上大同小异),其优点是搭建简单,不需要其他服务。通过 cnp…

ESP32-C3模组上跑通OTA升级(11)

接前一篇文章:ESP32-C3模组上跑通OTA升级(10) 本文内容参考: 《ESP3-C3 物联网工程开发实战》 乐鑫科技 特此致谢! 上一回说到解决了证书验证的问题,但紧接着又出现了一个新的问题:版本相同无…

分享一款开源可自行托管的 Heroku / Netlify / Vercel 替代方案工具,高达16.9K Star

之前分享了一篇文章【AI云部署】盘点开源项目免费云部署的几种技术方案 , 你可能会有这样的一个想法,要不我自建一个云平台自行托管。你看大公司都是自建的服务,托管在外面有隐私安全顾虑。 Coolify 是 Heroku / Netlify / Vercel 等的开源…

零基础入门学习Python第二阶04SQL详解03

MySQL 新特性 JSON类型 很多开发者在使用关系型数据库做数据持久化的时候,常常感到结构化的存储缺乏灵活性,因为必须事先设计好所有的列以及对应的数据类型。在业务发展和变化的过程中,如果需要修改表结构,这绝对是比较麻烦和难…

PLM系统与PDM系统、ERP系统、CRM系统有哪些关系?

在当今快速发展的信息技术时代,企业信息化已成为提升管理水平和增强竞争力的关键。其中,产品生命周期管理(PLM)作为企业信息化的基石,与其他信息系统如产品数据管理(PDM)、企业资源规划&#xf…

流量卡,你买的是长期套餐的还是短期套餐?

大家可能都知知道,网上的流量卡有两种不同的套餐,长期和短期,那么如果是你的话,你是会选择长期套餐还是短期套餐 在介绍这个问题之前,我们先了解一下什么是长期套餐?什么是短期套餐? 1、长期套…

PS系统教程08

色彩模式 色彩模式我们可能每天都有使用。Photoshop提供了多种颜色模式,每种模式都有其特定的用途和特点。以下是几种常见的颜色模式及其区别。 HSB模式-人眼 点击前景色滑动色相带(0-360度) 颜色色相:颜色相貌(H&a…

【护网急训】应急响应靶场集,24年想参加hvv的同学抓紧练习吧。

应急响应靶场集 网络安全资源分享🔗除了包含技术干货:Java代码审计、web安全、应急响应等,还包含了安全中常见的售前护网案例、售前方案、ppt等,同时也有面向学生的网络安全面试、护网面试等。 护网中最重要的就是通过各类安全设备…

如何自建yum源仓库

文章目录 1,创建可用的yum源文件夹,把你自己的软件包,并放在这个目录文件夹中2,将yum源文件夹目录复制到/var/www/html/中3,客户端修改配置文件4,创建一个 RPM 软件包存储库5,查验是否成功6&…

基于springboot+vue的医院信息管理系统

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

软件设计详细需求分析报告-word(直接套用实际文档)

第3章 技术要求 3.1 软件开发要求 第4章 项目建设内容 第5章 系统安全需求 5.1 物理设计安全 5.2 系统安全设计 5.3 网络安全设计 5.4 应用安全设计 5.5 对用户安全管理 5.6 其他信息安全措施 第6章 其他非功能需求 6.1 性能设计 6.2 稳定性设计 6.3 安全性设计 6.4 兼容性设计…

1638. 统计只差一个字符的子串数目

题目 给你两个字符串 s 和 t,请找出 s 中的非空子串的数目,这些子串满足替换一个不同字符以后,是 t 串的子串。换言之,请你找到 s 和 t 串中恰好只有一个字符不同的子字符串对的数目。 一个子字符串是一个字符串中连续的字符。 …

全域外卖加盟是真的还是割韭菜?

近日,被业内公认为是2024年创业风口的全域外卖赛道迎来了第一场危机——多位想做全域外卖服务商的创业者在购买某公司的全域外卖系统后,发现其存在实物与描述严重不符的情况,并在退款阶段遇到诸多阻挠。在此背景下,外界对于全域外…