【Java基础】Java面向对象的三大特性,你了解多少?

DPABISurf使用教材 严老师的官方教程:http://rfmri.org/Course DPABISurf版本:dpabi50docker.tar.gz MATLAB版本:2018b 一、数据准备 (1)如果是数据的DICOM格式,整理成以下格式(注意文件夹的命名方式): 如果觉得不是很清楚,可以在官网下载Demo数据(http://rfmri.org/DemoData),参照里面的文件格式进行整理即可。 (2)如果数据是nii格式,整理成以下格式: 这里没有使用官网的demo数据进行学习,而是.. 阅读详情

大家好,我是程序员青戈,一个被Bug耽误了才艺的程序员👦专注于Java领域的知识分享和技术交流,每天会给大家带来Java学习的干货教程📚

微信搜索公众号 Java学习指南,回复 面试 领取一线大厂面试题一套😋加号主微信 xia_qing2012,可以进技术交流学习群一起共同进步哦😊


Java面向对象,有三大特性,下面一个一个细细展开。

封装

public、private、protected修饰符

说到封装,Java 中有三个访问权限修饰符:private、protected 以及 public,如果不加访问修饰符,表示包级可见。我们先来看下这三个修饰符的作用。

修饰符当前类同包子类其他包
public√√√√
protected√√√×
default√√××
private√×××

设计良好的模块会隐藏所有的实现细节,把它的 API 与它的实现清晰地隔离开来。模块之间只通过它们的 API 进行通信,一个模块不需要知道其他模块的内部工作情况,这个概念被称为信息隐藏或封装。因此访问权限应当尽可能地使每个类或者成员不被外界访问。

如果子类的方法重写了父类的方法,那么子类中该方法的访问级别不允许低于父类的访问级别。这是为了确保可以使用父类实例的地方都可以使用子类实例去代替,也就是确保满足里氏替换原则。

规范

字段决不能是公有的,因为这么做的话就失去了对这个字段修改行为的控制,客户端可以对其随意修改。例如下面的例子中,AccessExample 拥有 id 公有字段,如果在某个时刻,我们想要使用 int 存储 id 字段,那么就需要修改所有的客户端代码。

public class AccessExample {
    public String id;
}

可以使用公有的 getter 和 setter 方法来替换公有字段,这样的话就可以控制对字段的修改行为。

public class AccessExample {

    private int id;

    public String getId() {
        return id + "";
    }

    public void setId(String id) {
        this.id = Integer.valueOf(id);
    }
}

封装的好处

  1. 提高数据的安全性。
  2. 操作简单。
  3. 隐藏了实现。

继承

继承是类与类的一种关系,是一种“is a”的关系。比如“狗”继承“动物”,这里动物类是狗类的父类或者基类,狗类是动物类的子类或者派生类。如下图所示:

注:java中的继承是单继承,即一个类只有一个父类。

继承的初始化顺序

  1. 初始化父类再初始化子类
  2. 先执行初始化对象中属性,再执行构造方法中的初始化。

基于上面两点,我们就知道实例化一个子类,java程序的执行顺序是:

父类对象属性初始化---->父类对象构造方法---->子类对象属性初始化—>子类对象构造方法

继承这块大家都比较熟,我来举个例子:

继承示例

Animal动物:

public class Animal {
    /**名称*/
    public String name;
    /**颜色*/
    public String color;
    
    /**显示信息*/
    public void show(){
        System.out.println("名称:"+name+",颜色:"+color);
    }
}

Dog狗:

/**狗继承自动物,子类 is a 父类*/
public class Dog extends Animal {
    /**价格*/
    public double price;
}

dog并没有定义color属性,但在使用中可以调用,是因为dog继承了父类Animal,父类的非私有成员将被子类继承。如果再定义其它的动物类则无须再反复定义name,color与show方法。

多态

多态这块,我要跟大家好好唠叨唠叨,首先来看下概念:

多态概念

多态:一个对象具备多种形态。
①父类的引用类型变量指向了子类的对象
②接口的引用类型变量指向了接口实现类的对象

多态的前提:必须存在继承或者实现关系。

动物 a  = new 狗();

多态要注意的细节

  1. 多态情况下,子父类存在同名的成员变量时,访问的是父类的成员变量。
  2. 多态情况下,子父类存在同名的非静态的成员函数时,访问的是子类的成员函数。
  3. 多态情况下,子父类存在同名的静态的成员函数时,访问的是父类的成员函数。
  4. 多态情况下,不能访问子类特有的成员。

总结:多态情况下,子父类存在同名的成员时,访问的都是父类的成员,除了在同名非静态函数时才是访问子类的。

注意:java编译器在编译的时候,会检查引用类型变量所属的类是否具备指定的成员,如果不具备马上编译报错。(编译看左边)

多态的应用

  1. 多态用于形参类型的时候,可以接收更多类型的数据。
  2. 多态用于返回值类型的时候,可以返回更多类型的数据。

多态的好处: 提高了代码的拓 展性。

我们想想,平时写MVC三层模型的时候,service为什么要写接口呢?因为可能有个service会有多种不同的实现。service就是我们平时用多态最多的地方。


关于作者

程序员青戈,5年一线Java开发经验,先后在IBM、阿里、科大讯飞踩坑~

微信搜索:Java学习指南 关注我的原创公众号

感谢大家的阅读,创作不易,能否请您小手点一点下方的 一键三连 支持一下作者呢😊谢谢~

芒果YOLOv5改进05:损失函数IoU 篇之Repulsion Loss:原创改进损失函数 Repulsion:解决目标遮挡场景下检测,为解决密集人群检测中遮挡设计的损失函数,打造高效检测器涨点 YOLOv5改进代码实践|结合Repulsion 解决目标遮挡场景下检测🚀 阅读详情

相关推荐

N5105 PVE UEFI核显直通Windows:从黑屏到HDMI输出的实战调优

本文详细介绍了在N5105处理器上实现PVE UEFI核显直通Windows的实战调优方法。针对黑屏和HDMI音频无法识别等常见问题,提供了系统参数调整、驱动模块加载、虚拟机配置等解决方案,帮助用户成功实现核显直通并优化性能。

weixin_42566424的博客 203

JAVA面向对象【三大特性】

目录一、封装性面向对象的特征一:封装与隐藏一、问题的引入二、封装性的体现:三、封装性的体现需要权限修饰符来配合体会四种不同的权限修饰 练习 二、继承性一、继承性的好处:二、继承性的格式:class A extends B{}三、Java中关于继承性的规定四、object类说明方法的重写override/overwrite 例子 Super关键字的使用 举例:测试 子类实例化父类对象的过程三、多态性举例: 为什么要有多态性虚拟方法的调用 面向对象的特征一:封装与隐藏 一、问题的引入 二、封装性的

芊樱烛渊的博客 4108

在win10-wsl2(ubuntu)中安装jlink

在 官方下载linux版本的deb包拷贝到ubuntu的/home目录下(其他目录也可以),进行安装然后提示很多依赖缺失的错误,此时执行自动安装需要的依赖包再次重新安装就可以啦查看是否安装成功,输入JLink 再按下两次Table键,是否如下所示这样表示安装成功了。

yaq_30401的博客 3134

java中运行多态时的含义是什么?有什么作用?

运行时多态:当同一个引用变量(父类引用)指向不同的子类实例,然后访问引用变量成员方法, 方法会有不同的表现。换句话说,运行时多态就是重写,就是子类方法重写了父类方法。使用父类引用指向子类对象,再调用某一父类中的方法时,不同子类会表现出不同结果。 作用:运行时多态性提供了更大的灵活性,因为所有事情都在运行时得到解决。 ...

passsss的博客 374

本地部署静态网站托管平台 Netlify 并实现外部访问(Windows 版本)

Netlify 是一款基于云计算的网站部署和托管平台,专为开发者提供便捷的静态网站和 Jamstack 应用部署服务。它的能力在于将网站构建、部署、托管以及持续集成等流程高度集成,简化了开发和运维的复杂程度。用户无需关心服务器的配置、维护等工作。本文将详细介绍如何在本地安装 Netlify 以及结合路由侠内网穿透实现外网访问 Netlify。

lyxnwct的博客 523

【机械视觉】Halcon—【二、Halcon算子全面介绍(超详细版)】

Halcon 的算子(operators)按照功能被系统性地划分为多个类别,官方文档中目前(Halcon 22.11 版本)共有 19 个主分类,每个主分类下还有若干子分类。 本人在此对这19个分类的常用核心算子进行了一系列的总结,且本人在文章最后还总结了一些案例经验。 注意: ​​​​​​​跨分类调用:某些算子可能在多个分类中,但官方文档中会明确其主分类。 例如: read_image(文件操作)常被其他分类(如图像处理)的示例调用,但其核心功能是文件读取。

qq_3517289697的博客 3912

【Java笔记】第8章:面向对象的三大特性(封装、继承、多态)

各位小伙伴大家好!上期小编给大家讲解了Java中的面向对象,接下来讲讲Java中面向对象的三大特性!Java中面向对象的三大特性是封装(Encapsulation)、继承(Inheritance)和多态(Polymorphism)。这些特性是Java编程语言中实现面向对象编程(OOP)的核心概念。封装(Encapsulation)封装是指将数据(属性)和操作数据的方法(行为)封装在一起,形成一个不可分割的整体。在Java中,封装通过访问修饰符(如publicprivateprotected和。

Guiat的博客 2214

IDM 的免费替代品来了!这款开源下载器速度提升500%

💡分享一款开源的下载管理工具,支持多线程加速(最高提升500%)、队列管理、计划任务和浏览器集成,界面现代化且支持深色模式,跨平台支持Windows/Linux,是IDM的优秀替代方案🎈

XiaoqiangClub的博客 726

【Java】一文带你了解面向对象程序的三大特性

面向对象程序的三大特性

一直往前走。 2236

基于Python的车牌识别系统实现

本文将以基于Python的车牌识别系统实现为方向,介绍车牌识别技术的基本原理、常用算法和方法,并详细讲解如何利用Python语言实现一个完整的车牌识别系统。

商务合作 / 项目定制 / 学习交流。个人vx:lovely_wml 5万+

【Android Performance】Android CPU绑核实战:从taskset到cpuset的完整调优指南

本文系统讲解Android系统中的CPU绑核(CPU Affinity)技术,涵盖用户空间的taskset命令行绑核、内核cpuset分组机制的原理与操作、进程级与线程级绑核的代码实现、以及中断绑核的底层方法。文中深入拆解CPU亲和性掩码的计算规则、各cpuset分组的默认策略差异、绑核后的验证手段及常见踩坑场景,并配有多项实操命令与C代码示例。适合从事Android系统性能调优、进程调度优化的开发者阅读。

weixin_44081096的博客 1309

Java面向对象的三个特性(封装性、继承性、多态性)

Java面向对象的三个特性(封装性、继承性、多态性) 首先我们再来提一下面向对象: 面向对象是一种符合人类思维习惯的编程思想,显示生活中存在各种形态不同的事物,这些事物之间存在着各种各样的联系(每种事物都具备自己的属性和行为)。在程序中使用对象来映射现在中的事物,使用对象的关系来描述事物之间的关系,这种思想就是面对对象的思想。面向对象思想就是在计算机程序设计过程中,参照现实中事物,将事物的属性特...

haojiaxin1的博客 6840

车载诊断架构 --- 车载ECU开发中DTC数量与芯片存储能力的关系及应对策略

本文探讨了汽车电子系统中ECU存储DTC故障码的容量问题及解决方案。作者作为汽车电子工程师,针对台架测试中遇到的DTC存储超限案例展开分析,指出随着汽车智能化发展,ECU需处理的DTC数量激增与芯片存储能力有限的矛盾。文章详细介绍了DTC的存储需求、ECU支持数量与芯片容量的关系,并提出应对策略,通过实际案例验证了方案的可行性。最后强调在ECU开发中需合理分配存储资源,确保关键故障信息不丢失。

Soly_kun的博客 87

Java面向对象编程之三大特性

一:面向对象编程三大特性 (1)继承 (2)封装 (3)多态 二:接口,内部类,抽象类 三:常见关键字:this,super,static,final

尚拙的博客 1万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Java面向对象三大特性

面向对象特性之封装性,继承性,多态性

weixin_63736489的博客 6319

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

夯实Java基础系列1:Java面向对象三大特性(基础篇)

本文会结合虚拟机对引用和对象的不同处理来介绍三大特性的原理。 具体代码在我的GitHub中可以找到: https://github.com/h2pl/MyTech 文章首发于我的个人博客: https://h2pl.github.io/2018/04/22/javase1/ 三大特性:继承 封装 多态 继承 Java中的继承只能单继承,但是可以通过内部类继承其他类来实...

Java技术江湖 7648

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Java基础-面向对象三大特性

Java面向对象三大特性,封装,继承,多态

m0_75024203的博客 1290

Java面向对象三大特性深度解析

Java面向对象编程(OOP)是构建复杂软件系统的核心思想。而封装、继承、多态作为面向对象的三大特性,更是理解和掌握 Java 编程的基石。它们不仅规范了代码的结构,还提升了代码的可维护性、可复用性和扩展性。本文将通过原理剖析、代码示例和场景分析,全面解读这三大特性的本质与实践方法。

aa_hdkf_vg的博客 925

JAVA面向对象三大特性

JAVA面向对象三大特性 文章目录JAVA面向对象三大特性面向对象面向对象生命周期封装概念:封装步骤:关于JAVA关键字this关键字构造方法:构造方法作用:继承概念:语法结构:继承与扩展方法的重载方法的覆盖final关键字super关键字继承和类实例化过程多态概念:作用:多态存在的三个必要条件多态的好处: Java 是面向对象的高级编程语言,类和对象是 Java 程序的构成核心。围绕着 Java...

dragon3100的博客 1232

java面向对象的三大特性

java面向对象的三大特性包括:封装、继承、多态 一、 封装 1.含义:封装就是把同一类事物的共性(包括属性和方法)归到同一类中,方便使用。 封装也称信息隐藏,是指利用抽象数据类型把数据和基于数据的操作封装起来,使其成为一个不可分割的整体,数据隐藏在抽象数据内部,尽可能的隐藏数据细节,只保留一些接口使其与外界发生联系。也就是说用户无需知道内部的数据和方法的具体实现细节,只需根据留在外部的接口进行操作就行。 2.封装的实现 需要修改属性的访问控制符(修改为private); 创建getter/setter方

tianming的博客 2773

【Java课堂笔记】Java 入门基础语法与面向对象三大特性详解​

本文将详细介绍 Java 入门所需的基础语法知识,并深入剖析面向对象的三大特性。​

2402_88992112的博客 1098

Java面向对象基础及三大特性

Java面向对象基础及三大特性 #对象的概念 Java是面向对象的编程语言,对象就是面向对象程序设计的核心。而对象就是现实世界的实体的一一对应,理论上说现实世界每一个实体都可以被看做是一个对象,对象有以下特点 对象具有属性和行为(变量和方法) 对象具有变化的状态 对象具有唯一性(每次根据一个类创建对象时都会在堆里开辟新的空间) 对象都是对应类的实例 一切皆可为对象 面向过程的程序设计 最小的程...

qq_41379503的博客 300

java面向对象三大特性理解

子类继承父类的特征和行为。提供继承信息的类被称为父类(基类),得到继承信息的类被称为子类(派生类)。

m0_61491254的博客 1704

Java基础精讲之面向对象三大特性,封装,继承,多态!!!

Java是面向对象编程的一种语言,我们可以把Java想象成一个世界,世界中有很多的东西比如人,物品等等,而这些在Java的世界中就是一个一个对象的形式存在的,我们可以把一个对象就理解成一个人,一个物品等等。所以说面向对象的三大特性是我们在学习java中最重要,也是最核心的基础,本篇文章就以简单易理解的方式解读面向对象的三大特性。向上转型的条件是必须是继承关系,编译类型是运行类型的父类,并且如果想要调用方法的时候,子类必须重写父类的方法。

m0_71031876的博客 892

Java面向对象三大特性学习总结

面向对象的三大特性:封装、继承、多态 将对象的属性和实现细节隐藏起来,不让外部程序直接进行访问,将属性私有化,仅对外公开接口,让外部程序通过类提供的方法来对隐藏信息进行访问和操作。好处是外部程序只能通过类规定的方法对数据进行访问,避免外界程序对类内部属性进行破坏。

GeTDarK的博客 1134

Java面向对象的三大特性

Java面向对象的三大特性继承 关键字:extends 概念:继承机制是面向对象程序设计不可缺少的关键概念,是实现软件可重用的根基,是调高软件系统的可扩展性与可维护性的主要途径。所谓继承是指一个类的定义可以基于另外一个已经存在的类,即子类基于父类,从而实现父类代码的重用,子类能吸收已有类的数据属性和行为,并能扩展新的能力。 在Java中,类的继承是单继承。 继承中构造方法的调用子类构造方法总是先调用

Zhang1057503612的博客 693
上一篇: 【Java基础】一文全面了解Java关键字
下一篇: 【Java基础】真是没想到,Java里一个小小的String还有这么多窍门!
程序员青戈
程序员青戈 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄10年 3万+粉丝 250原创
评论 36
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员青戈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值