面向对象之抽象和接口

Java面向对象编程——抽象类和接口 Java面向对象编程——抽象类和接口 定义类的过程就是抽象和封装的过程,而抽象类与接口则是对实体类进行更高层次的抽象,进定义公共行为和特征。 抽象类: 如果一个类没有足够的信息去描述一个具体的对象,那我们就称之为抽象类。 语法格式: public abstract class 类名{} 案例代码: package Demo01; /** * @version 1.0 * @author: jiazhihao * @date: 2021-05-13 10:31 */ public class De 阅读详情

@(笔记)[面向对象|MarkDown|我的博客]
07.14

面向对象之抽象和接口

抽象类(掌握)

把多个类中相同的方法声明给抽取出来。定义到一个类中。

  • 一个方法如果只有方法声明,没有方法体,那么该方法必须定义为抽象方法。
  • 而一个类中如果有抽象方法,那么,该类必须定义为抽象类。

抽象类的特点:

  • 抽象方法和抽象类都必须用abstract表示。
  • 一个类继承抽象类的时候;
    • 要么:本身是一个抽象类。
    • 要么:实现抽象类中的所有抽象方法。
  • 抽象类有构造方法,但是不能实例化,可以按照多态的使用方式使用。
  • 成员特点:
    • 成员变量
      • 可以是变量,也可以是常量。
  • 构造方法
    • 有 用于子类访问父类构造方法,初始化父类数据
  • 成员方法
    • 可以是抽象,也可以非抽象。
  • 抽象类的好处:

    • 抽象类中的非抽象方法提高了代码的复用性。
    • 抽象类中的抽象方法强制要求子类必须重写某些方法。
  • 抽象类中的几个小问题:

    • 抽象类不能实例化,构造方法有什么用呢?
      • 用于子类访问父类数据的初始化。
    • 如果一个类中没有抽象方法,而类却被定义为了抽象类,请问为什么?
      • 不让创建对象。
    • abstract不能和哪些关键字共存:
      • private: 冲突
      • final: 冲突
      • static: 无意义

接口(掌握)

如果一个抽象类中的所有成员方法都是抽象的,java就提高了一种更抽象的表达方式:接口。

接口的特点:

  • 接口用interface定义。
    类实现接口用implements关键字。
  • 一个类要实现接口:
    • 本身是抽象类。
    • 实现接口中的所有抽象方法。
  • 接口不能实例化。可以按照多态的使用方式使用。
  • 成员特点:
    • 成员变量:只能是常量。
      • 默认修饰符:public static final
      • 成员方法:只能是抽象方法。
      • 默认修饰符:public abstract

使用接口的原则

  1. 使用接口解决多继承
  2. 使用接口为外部类添加功能
  3. 以面向对象的角度考虑,将一个类与生俱来的特征和行为和依赖于外部的可选的特征和行为分离,让类尽可能的单纯,即解耦

接口的优点

  1. 将设计和实现分离,对外(调用者)隐藏了实现(而通常调用者也不需要关心实现)
  2. 面向接口编程是OOP的核心

类与接口的关系:

  • 类与类的关系
    • 继承: 单继承。
  • 类与接口的关系
    • 实现: 单实现,多实现。
    • 继承一个类的同时实现多个接口。
  • 接口与接口的关系
    • 继承: 单继承,多继承。

抽象类和接口的区别:

  • 成员区别
    • 抽象类:
      • 成员变量
        • 可以是变量,也可以是常量。
      • 构造方法
        • 有
      • 成员方法
        • 可以是抽象,也可以非抽象。
    • 接口:
      • 成员变量:只能是常量。
        • 默认修饰符:public static final
      • 成员方法:只能是抽象方法。
        • 默认修饰符:public abstract
  • 关系区别
    • 类与类的关系
      • 继承,单继承。
    • 类与接口的关系
      • 实现,单实现,多实现。
      • 继承一个类的同时实现多个接口。
    • 接口与接口的关系
      • 继承,单继承,多继承。
  • 设计理念不同
    • 抽象类被继承体现的是:is a的关系。抽象类中定义的是继承体系共性功能。
    • 接口被实现体现的是:like a的关系。接口中定义的是继承体系的扩展功能。

什么时候把抽象方法写到抽象类中–>与生俱来的行为
什么时候把抽象方法写到接口中 –>附属添加的第三方的行为

总结

  1. 抽象类在java语言中所表示的是一种继承关系,一个子类只能存在一个父类,但是可以存在多个接口。
  2. 在抽象类中可以拥有自己的成员变量和非抽象类方法,但是接口中只能存在静态的不可变的成员数据(不过一般都不在接口中定义成员数据),而且它的所有方法都是抽象的。
  3. 抽象类和接口所反映的设计理念是不同的,抽象类所代表的是“is-a”的关系,而接口所代表的是“like-a”的关系。

抽象类和接口是java语言中两种不同的抽象概念,他们的存在对多态提供了非常好的支持,虽然他们之间存在很大的相似性。但是对于他们的选择往往反应了您对问题域的理解。只有对问题域的本质有良好的理解,才能做出正确、合理的设计。

Palantir 凭什么两年涨 20 倍?深度解析解决 AI 幻觉的 “本体论“ 核心原理 本文深度解析了Palantir本体(Ontology)的核心原理及其在企业AI应用中的革命性价值。本体通过构建结构化的语义层与动态执行层,将企业分散的数字资产(数据集、虚拟表、模型)映射为现实世界的数字孪生,使大模型能够在**严格的业务规则与数据边界内**进行推理与决策,从而从架构层面彻底解决AI幻觉问题。这一技术架构不仅帮助Palantir实现股价两年增长20倍、市值突破4000亿美金的商业成功,更成为SAP、Salesforce等ERP巨头争相模仿的下一代企业智能标准范式。通过航空业飞机故障应急处理等实 阅读详情

相关推荐

最新版Node.js下载安装及环境配置教程(非常详细)

选择对应你系统的Node.js版本。

DN金猿的博客 12万+

07-面向对象基础 (抽象)

Java面向对象--抽象

yc_Cabbage的博客 1312

Copula函数

Copula是处理统计中随机变量相关性问题的一种方法。本文是对Copula函数的各种定义,Copula函数的思想,Copula函数的性质,Copula函数的类型等理论资料总结

Explore 5万+

面向对象—抽象

1.抽象类 回想一下前面学习过的猫狗案例,我们提取出了一个动物类,这个时候我们可以通过Anima a = new Animal();来创建一个动物类对象。其实这个是不对的,因为我说一个动物,你不知道我说的哪个动物,只有看到了具体的动物才知道这是什么动物,所以动物本身并不是具体的一个事物,而是一个抽象的事物。只有真正的例如:猫、狗;它们才是具体的事物,所以说我们前面的设计是有问题的。同理我们也可以想一想不同的动物它吃的是不同的食物,所以呢我们也不应该在动物类中给出具体的吃的方法实现,只应该给出一个吃的方法声

weixin_67796933的博客 907

用Arduino和MAX30102做个心率血氧仪,从硬件连线到算法调试全流程避坑

本文详细介绍了如何使用Arduino和MAX30102传感器构建高精度心率血氧仪,涵盖硬件连线、软件配置、信号处理及算法优化全流程。通过实战案例和避坑指南,帮助开发者快速实现临床级精度的健康监测设备,适用于可穿戴设备和医疗健康领域。

weixin_26897585的博客 384

树莓派4B:控制步进电机

文章目录准备阶段接线阶段树莓派程序 准备阶段 准备以下物品,淘宝都可以买到: 57步进电机 电源开关(220v转24v,3A,72W) 步进电机驱动器 电源线 电线 杜邦线 树莓派4B一套 具体型号如下: 接线阶段 整体:接线效果如下图 电源开关起220v转24v作用,很好接线,输出24v接入步进电机驱动器 步进电机驱动器的 A+ A- B+ B- 按提示接步进电机四线,步进电机上就会有说...

学习路上的鸭子的博客 1万+

面向对象 之 抽象

在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。

qq_64537903的博客 452

blenderproc 制作位姿估计数据集

blenderproc 制作位姿估计数据集 准备工作 1.首先需要去下载blenderproc的源码blenderproc,按照作者的readme文件进行编译。 2.其次需要下载bop_toolkit源码,链接如下bop_toolkit 3.说明:blenderproc主要用来生成数据,包括depth,rgb,位姿标签文件(scene_gt.json),bop_toolkit主要用来生成mask和mask_visib,scene_gt_info.json,用于判断物体的可见区域比例,如果遮挡太多考虑去掉。做

qq_43814359的博客 5698

面向对象——抽象

果酱18:20:57 4.1抽象类 编写-个类时,为该类定义-些方法,这些方法用于描述该类的行为方式,这些方法都有具体的方法体,但在某些情况下,某个父类仅知道其子类应该包含哪些方法,却无法准确地知道子类实现这些方法的细节。如定义-个图形类(Shape)作为诸如三角形、菱形以及矩形等图形的父类,在该父类中定义calcPerimeter()方法,该方法用于计算图形的周长,但不同的子类图形计算周长的方式大相径庭,所以导致Shape类的calcPerimeter()方法无法运用某个固定的计算图形周长的公式...

weixin_57463832的博客 2313

AUTOSAR知识点 之 XCP (三):XCP功能描述

记录一下XCP使用时候的功能包含命令时序、错误码表、事件描述以及对规范的记录。XCP的图示如下从上图就可以看出数据流的流向CAN-CANIF-XCP,发送反之。XCP的状态机如下。

梦想技术家 3076

手把手教你学Simulink——基于智能电网与AI融合的场景实例:强化学习在并网逆变器控制中的应用

本文介绍了如何利用Simulink和强化学习工具包实现并网逆变器的智能控制。针对传统PI控制方法的局限性,提出采用强化学习(RL)构建自适应控制系统。通过详细步骤展示了从建立主电路模型、设计强化学习环境、选择训练智能体(如PPO算法)到仿真对比测试的全过程。实验结果表明,RL控制器在动态响应、THD指标和参数鲁棒性等方面优于传统PI控制器,突显了数据驱动控制在复杂电力系统中的优势。文章还探讨了该技术在微电网协同控制、在线学习等场景的拓展应用,为智能电网控制提供了新思路。

MHD0815的博客 336

面向对象的四大特征(非常重要)

面向对象四大特征:抽象,封装,继承,多态(非常重要) 1.抽象 定义:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面,抽象只关注对象的哪些属性和行为,并不关注这此行为的细节是什么 1.1 研究事物的静态特征(属性) 1.2 研究事物的动态特征(方法/函数) 1.3 形成结果(类,class) 1.4 类和对象相互转变(new) 举例说明: 学生有姓名,有年龄,有身份证...

qq_42429369的博客 5万+

[Python图像处理] 二.OpenCV+Numpy库读取与修改像素

该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门、OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子、图像增强技术、图像分割等,后期结合深度学习研究图像识别、图像分类应用。希望文章对您有所帮助,如果有不足之处,还请海涵~ 同时推荐作者的C++图像系列知识: [数字图像处理] 一.MFC详解显示BMP格式图片 [数字图像处理] 二.MFC单文档分...

杨秀璋的专栏 3万+

Java面向对象笔记 • 【第4章 抽象类和接口】

全部章节 >>>> 本章目录 4.1 抽象类 4.1.1 抽象方法和抽象类 4.1.2 抽象类的作用 4.1.3 实践练习 4.2 final修饰符 4.2.1 final成员变量 4.2.2 final局部变量 4.2.3 final方法 4.2.4 final类 4.2.5 实践练习 4.3 接口 4.3.1 接口的定义 4.3.2 接口的实现 4.3.3 抽象类和接口的区别 4.3.4 实践练习 4.4 接口编程案例 4.4.1 接口编程..

杨明金的博客 3703

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

【面向对象】抽象类和接口

目录 1. 抽象类的特点 2. 接口的特点 3. 抽象类和接口的区别 1. 抽象类的特点 抽象类可以有构造方法,但不能直接使用new调用构造方法进行实例化。需要通过非抽象子类的new,来间接的调用父类的构造方法进行实例化 抽象类中,可以存在普通属性、方法和静态属性、方法 抽象类中可以存在抽象方法, 也可以存在非抽象方法、 有抽象方法的类一定是抽象类,但抽象类中不一定有抽象方法 如果父类是抽象类,子类继承父类时,需要重写父类的抽象方法或者子类变成抽象类 2. 接口的特点 在接口中,只有

爱敲代码的小黄 889

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

以面向对象的角度分析抽象类和接口

一、面向对象思想的理解 面向对象即 OOP(Object Oriented Programming) 它有三大特征 :封装、继承、多态 封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。 多态是同一个行为具有多个不同表现形式或形态的能力。 面向对象思想相当于对万物的一个抽象,抽象具体体现在接口和抽象类 抽象类和接口 1.首先在定

川川的博客 612

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Java面向对象之Java抽象类和接口

一:抽象类的描述及介绍: 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象, 这样的类就是抽象类。抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法、初始化块和构造方法和普通类一样。 由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。 1、 抽象方法 抽象方法只包含一个方...

程序羊的博客 484

面向对象编程之—抽象类和接口

1.抽象类 2.接口:比较接口、clone接口、深浅拷贝 3.模板设计模式 4.关于接口的代理设计模式

m0_58006481的博客 1307

Java面向对象-抽象类和接口

抽象类和接口 文章目录抽象类和接口一、抽象类二、接口三、抽象类和接口的异同点 一、抽象类 1.抽象类 public abstract class Pet{ public abstract void toHospital(); } 2.抽象类和普通类的不同 (1)抽象类不能被实例化,但可以创建一个引用变量,其类型是一个抽象类,指向非抽象的子类实例 (2)普通类可以被实例化 (3)抽象方法无方法体,普通方法有方法体 3.抽象类与抽象方法的使用 (1)抽象类中可以没有抽象方法,但包含了抽象方法的类必须被定义为

weixin_51989264的博客 301

Java面向对象第五章、抽象类和接口

本文介绍了Java中抽象类和接口的核心概念及使用方法。抽象类与普通类的主要区别在于不能被实例化,可以包含抽象方法;接口则是完全抽象的,只能包含抽象方法和静态常量。通过防盗门、USB设备等示例说明了接口的实际应用场景。文章对比了抽象类和接口的异同:抽象类利于代码复用,接口便于系统扩展和维护。最后总结了面向对象设计原则,强调应多用组合少用继承,针对接口编程。掌握这些知识能够帮助开发者更好地运用抽象类和接口解决实际问题。

2302_76655922的博客 1111

php面向对象的接口,php面向对象之抽象类和接口

PHP面向对象-抽象类和接口抽象类:一种特殊的类类中有一个是抽象方法就是抽象类关键字:abstract抽象类中可以有不是抽象方法或抽象属性,但访问权限不是是私有的抽象类的作用:使用抽象类就包含了继承关系为子类定义了公共接口为子类提供了规范和约束abstract class aa{}抽象方法:没有方法体(声明时没有花括号和内容),直接分好结束;Abstract关键字修饰abstract fu...

weixin_39557813的博客 255

Java面向对象的特性,抽象类和接口

面向对象编程语言 1.面向对象的初步认识 在大多数编程语言中根据解决问题的思维方式不同分为以下两种编程语言: 1.面向过程编程:关注解决问题的过程本身 ,分析出解决问题需要的每一个步骤 2.面向对象编程:它面对的事物是一个对象(具体的实体),解决问题的过程本身不关注,只需要依赖对象调用即可 以每天下楼吃饭为例: 面向过程 面向对象 1. 下楼找餐厅 下楼找餐厅 2. 看菜品,并熟悉掌握要吃的每一道菜的来源,制作流程,烹饪手法等具体细节 开吃了 (不关注具体菜的细节) 3. 吃这道

weixin_47598133的博客 341

面向对象-抽象类和接口

面向对象的三大特性 封装性:所有的内容对外部不可见 修饰词的用法权限 继承性:将其他的功能继承下来继续发展 多态性:方法的重载本身就是一个多态性的体现 方法的重载 和 重写 也是多态的一种, 不过是方法的多态(相同方法名的多种形态)。 重载: 一个类中方法的多态性体现 重写: 子父类中方法的多态性体现。 抽象类和接口的区别 1、抽象类要被子类继承,接口要被类实现。 2、...

-星星电灯的博客 423

Java面向对象-继承、抽象类和接口

接口是一种引用数据类型由interface定义只能包含抽象方法(常量、默认方法、静态方法、私有方法----以后再讲)接口不能被实例化(new对象)接口是需要被实现的,实现类必须重写接口中所有的抽象方法(注意:重写接口中的方法时,必须加public------以后再讲)/** 接口的演示 *///编译错误,接口不能被实例化//演示接口的定义//接口中的方法默认都是抽象的,前面默认有abstract//编译错误,抽象法方不能有方法体//演示接口的实现。

qq_68630091的博客 1068

面向对象——抽象类和接口

6.面向对象――抽象类和接口 6.1 抽象类        6.1.1抽象类的由来        当多个类中有相同的方法声明,但是方法内部内容不同时,可以对这些类进行向上抽取为一个抽象类,被抽取的类继承这个抽象类,抽象类中定义了与子类相同声明的无方法体的抽象方法,由子类去覆写. 注意:抽象的关键字是abstract,可以用来修饰方法和类,当一个类中有abstract修饰的抽象方法时,

loneswordman的专栏 753

面向对象、类的继承、抽象类和接口

面向对象 ​ 计算机语言的发展由面向过程向面向对象发展的,是越来越符合人的思维习惯的。Java是一门面向对象的程序设计语言,对象是由类抽象出来的,所有的问题都通过对象来处理。对象可以操作类的属性和方法解决相应的问题 ​ 在Java语言中通过new操作符来创建对象,每实例化一个对象就会自动调用一次构造方法,实质上这个过程就是创建对象的过程 public class CreateObject{ public CreateObject(){ //构造方法 System.out.printl

doro_m的博客 410
上一篇: 面向对象之多态
下一篇: 几个java小问题
dong4go
博客等级 码龄12年 5粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值