【Java编程进阶】Java抽象类与接口详解

news2024/9/30 1:31:25

在这里插入图片描述

推荐学习专栏:Java 编程进阶之路【从入门到精通】,从入门到就业精通,买不了吃亏,买不了上当!!


文章目录

  • 1. 抽象类
  • 2.接口
  • 3. 抽象类和接口对比
  • 4. 总结
  • Java基础教程系列文章

1. 抽象类

前面说到,Java 编程以对象为单位,我们把具有相同属性和行为的事物抽象成一个类,这个类的实例化叫做对象,那么什么是抽象类呢?

在这里插入图片描述

抽象类往往用来表示设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。

比如前面我们把动物抽象为一个类,但是现实中并没有一个事物叫动物,它只是一类事物的总称,并不是一个实体,这种情况下我们把它定义为抽象类。

语法格式:

修饰符 abstract class 类名(){
    //……
   abstract 方法名();
}

abstract 修饰符修饰类时,这个类就是抽象类,修饰方法时,这个方法就是抽象方法。

需要注意的是,含有抽象方法的类一定是抽象类,抽象类不能实例化对象,且必须被继承,抽象方法只需声明不用实现且一定要在子类中重写,否则子类仍为抽象类。

在这里插入图片描述

由于抽象方法一定要被继承,所以 abstract 不能与 final 同时修饰一个类。抽象方法必须被重写,所以 abstract 不能与 private,static,final 并列修饰同一方法。

示例:

abstract class Animal {
    public abstract void walk();
    //...
}

class Cat extends Animal {
    //...
    public void walk(){
        System.out.println("小猫在走路...");
    }
}

public class Test {
    public static void main(String[] args) {
        Cat cat=new Cat();
        cat.walk();
    }
}

2.接口

Java 接口是一些方法声明的集合,一个接口只有方法的声明没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为。

Java 接口用来实现多态,一个类可以实现多个接口,解决了单继承的问题。

定义接口:

[访问控制符] interface <接口名>{
     类型标识符final 符号常量名n = 常数;
     返回值类型  方法名([参数列表]);}

实现接口:

[访问控制符] class 类名 [implements <interface>[,<interface>]*],]
 {
   //类体,必须实现接口中的方法
 }

我们可以把接口看做特殊的抽象类,在这个抽象类中只能定义抽象方法和常量。接口有以下的特点:

  • 接口里的成员属性全部是以 public(公开)、static(静态)、final(最终) 修饰符修饰
  • 接口里的成员方法全部是以 public(公开)、abstract(抽象) 修饰符修饰
  • 接口里不能包含普通方法
  • 子类继承接口必须实现接口里的所有成员方法,除非子类也是抽象类

示例:

interface Walk{
    //...
    public void walk();
}

interface Sing{
    //...
    public void sing();
}

class Dog implements Walk,Sing{
    //...

    @Override
    public void walk() {
        System.out.println("小狗在走路...");
    }

    @Override
    public void sing() {
        System.out.println("小狗在唱歌...");
    }
}

public class Test {
    public static void main(String[] args) {
        Dog dog=new Dog();
        dog.walk();
        dog.sing();
    }
}

3. 抽象类和接口对比

上面说到可以把接口看做一个只有抽象方法和常量的抽象类,那么抽象类和接口有什么不同呢?

类和抽象类代表一类实体,类可以被实例化,而抽象类不可以实例化,接口并不能代表一类实体,只能代表功能或者属性。在应用时,已经很具体没有再抽象的必要使用单继承,而我们把独特的需要独立出来的功能或者属性封装在接口中。

4. 总结

这篇文章浅谈了抽象类和接口的实现以及两者的共同点和不同之处,关于Java面向对象基础教程系列就这么多内容,下一篇文章再谈一谈 Object 类,Java中 Object 是所有类的祖先,其重要性不言而喻!


Java基础教程系列文章

【Java编程进阶】花费数小时,带你学透Java数组,这些常用方法你还记得吗?

【Java编程进阶】面向对象思想初识

【Java编程进阶】封装继承多态详解

在这里插入图片描述

欢迎订阅学习Java编程进阶之路专栏,专栏文章持续更新!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【营销获客三】信贷细分客群研究——小微企业主

【营销获客三】信贷细分客群研究——小微企业主一、小微企业主客群综述1.1 小微企业主定义与体量1.2 小微企业主信贷需求规模1.3 小微企业主的发展历史1.4 小微企业主不同阶段的痛点问题二、小微企业主整体客群特征2.1 客群特征概述2.2 基本属性特征2.3 经营情况特征2.4 融资借…

RTL8380M/RTL8382M管理型交换机系统软件操作指南五:ACL/访问控制列表

接下来将对ACL进行详细的描述&#xff0c;主要包括以下四个方面内容&#xff1a;ACL概述、工作原理、ACL组设置、ACL规则 1.1 ACL概述 访问控制列表&#xff08;Access Control List&#xff0c;ACL&#xff09; 是路由器和交换机接口的指令列表&#xff0c;用来控制端口进出的…

自连接讲解

什么是自连接&#xff1f; 自连接可以理解为自己连接自己&#xff0c;在一张表上面所进行的操作&#xff1b;将一张表分成两张结构和数据完全一样的表&#xff0c;相当于克隆了一张跟自己长得一模一样的表&#xff1b; 但是既然是两张一模一样的表&#xff0c;数据库怎么去区分…

[ 数据结构 ] 汉诺塔--------分治算法最佳实践

0 分治算法 分治法:是一种很重要的算法。字面上的解释是“分而治之”&#xff0c;就是把一个复杂的问题分成两个或更多的相同或相似的子问题&#xff0c;再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解&#xff0c;原问题的解即子问题的解的合并。经典问题:…

什么你还不知道?快来看看我的年度总结吧

作者介绍&#xff1a;阿玥的小东东 作者职位&#xff1a;后端、python、正在学习c 主页&#xff1a;阿玥的小东东 现在呢&#xff0c;人们都在写自己的年度总结&#xff0c;我也来凑个热闹吧&#xff01; 其实我来CSDN这个平台时间不算久&#xff0c;从2022年11月15号开始&…

<C++>set和map

文章目录1. 关联式容器2. 键值对3. 树形结构的关联式容器4. set4.1 set的介绍4.2 set的使用4.2.1 set的模板参数4.2.2 set的构造4.2.3 set的迭代器4.2.4 set的容量4.2.5 set修改操作4.2.6 set的使用举例5. multiset5.1 multiset的介绍5.2 multiset的使用6. map6.1 map的介绍6.2…

字符串相关类

文章目录一、String类String的介绍String实例化面试题&#xff1a;String snew String("abc")创建对象&#xff0c;在内存中创建了几个对象&#xff1f;易错题1易错题2String常用方法String与char[ ]之间的转换String与byte[ ]之间的转换二、StringBuffer类、StringB…

如何将NACOS作为配置中心

新建一个命名空间 点击创建配置 关键点1&#xff1a;Data ID的命名规则&#xff1a; 前面我们演示了在 nacos 控制台新建一个 DataID 为 cloud-producer-server-dev.yaml 的数据集&#xff0c;那么这个 Data ID 是什么呢&#xff1f;Data ID 是配置集的唯一标识&#xff0c;一个…

CSS初级教程(字体)【第七天】

文章目录【1】CSS 字体【2】CSS 字体样式【3】CSS 字体大小【4】CSS 谷歌字体【5】CSS 字体属性【6】所有 CSS 字体属性CSS上回学习链接 CSS初级教程 颜色【第一天】 CSS初级教程 背景【第二天】 CSS初级教程 边框【第三天】 CSS初级教程 边距、高度、宽度【第四天】 CSS初级教…

ChatGPT的注册和使用教程

1 简介在时下热门话题AI作画之外&#xff0c;最近一个名叫ChatGPT的聊天机器人又掀起了一股人工智能的热潮。已有无数人投入到对它的测试研究之中&#xff0c;想探清它到底无所不能到何种地步。据悉&#xff0c;已有超过百万人与机器人聊天&#xff0c;甚至导致网站一度崩溃。那…

URDF与RVIZ

#来自赵虚左的资料&#xff0c;视频 创建功能包urdf01_rviz&#xff0c;依赖rviz xacro(比较简单使用) <launch> <!-- 设置参数 --> <param name"robot_description" textfile"$(find urdf01_rviz)/urdf/urdf/demo01_helloworld.urdf"…

Docker软件安装文档

软件安装文档 文章目录软件安装文档虚拟机安装系统死锁问题JDK11安装Docker安装Docker-Compose安装MySQL安装MySQL8安装Docker-Compose安装MySQL8MySQL5.7安装Nacos安装Docker安装Nacos单机Docker-Compose安装Nacos集群OpenResty安装Redis安装Docker安装单机RedisDocker-Compos…

【Unity3D】点选物体、框选物体、绘制外边框

1 需求描述 点选物体&#xff1a;点击物体&#xff0c;可以选中物体&#xff0c;按住 Ctrl 追加选中&#xff0c;选中的物体设置为红色。框选物体&#xff1a;拖拽鼠标&#xff0c;屏幕上会出现滑动框&#xff0c;滑动框内的物体会被选中&#xff0c;选中的物体设置为红色。绘…

Vue中自定义指令是什么?有哪些应用场景?

一、什么是指令 开始之前先学习一下指令系统这个词 指令系统是计算机硬件的语言系统&#xff0c;也叫机器语言&#xff0c;它是系统程序员看到的计算机的主要属性。因此指令系统表征了计算机的基本功能决定了机器所要求的能力 在vue中提供了一套为数据驱动视图更为方便的操作&…

【C语言进阶】qsort函数详解以及它的模拟实现

目录一、qsort函数介绍二、qsort函数参数介绍2.1&#xff1a;void* base2.2&#xff1a;size_t num2.3&#xff1a;size_t size2.4&#xff1a;int(* compar)(const void *,const void *)三、实际应用3.1&#xff1a;利用qsort函数对整型数组排序3.2&#xff1a;利用qsort函数对…

2023年1月9日:fastadmin在列表操作列区域添加按钮及控制已有按钮显示

列表操作列区域添加按钮 buttons: [{name: detail,title: __(详情),classname: btn btn-xs btn-primary btn-dialog,icon: fa fa-list,url: audit/detail,callback: function (data) {Layer.alert("接收到回传数据&#xff1a;" JSON.stringify(data), {title: &q…

【nvivo11plus教程】01_nvivo介绍、案例与批注

1、查看nvivo版本2、nvivo是如何支持质性研究的3、nvivo的项目介绍4、建立nvivo项目(1)建立项目(2)文件夹(3)新建分类(4)建立备忘录5、案例(1)建立案例(2)案例节点分类的变量设置(3)归类案例6、批注7、备忘录链接1、查看nvivo版本 2、nvivo是如何支持质性研究的 是一个迭代的过…

MATLAB算法实战应用案例精讲-【数据分析】时许异常检测

前言 时间序列异常检测的目的就是在时间序列中寻找不符合常见规律的异常点,无论是在学术界还是工业界这都是一个非常重要的问题。企业的运维场景中有海量的运维指标数据,如果单纯依靠人力来发现并定位异常,将是十分低效的,所以如果可以开发一个智能运维系统对于异常波动自…

MAC地址

目录MAC地址广播信道的数据链路层必须使用地址&#xff08;MAC&#xff09;IEEE 802局域网的MAC地址格式IEEE 802局域网的MAC地址发送顺序单播MAC地址举例广播MAC地址举例多播MAC地址举例MAC地址 使用点对点信道的数据链路层不需要使用地址使用广播信道的数据链路层必须使用地址…

加解密与HTTPS(6)

您好&#xff0c;我是湘王&#xff0c;这是我的CSDN博客&#xff0c;欢迎您来&#xff0c;欢迎您再来&#xff5e;随着成本的下降&#xff0c;主流网站都已经开始使用HTTPS了。但有了可信机构颁发的证书&#xff0c;网站就真的绝对安全了吗&#xff1f;以之前出现过的上大学被冒…