第三章:java的三大特征

news2024/11/24 20:41:56

系列文章目录


文章目录

  • 系列文章目录
  • 前言
  • 一、封装
  • 二、继承
  • 三、多态
  • 总结


前言

面向对象编程有三大特征: 封装、 继承和多态。


一、封装

封装(encapsulation)就是把抽象出的数据【属性】和对数据的操作【方法】封装在一起,数据被保护在内部,程序的其他部分只有通过被授权的操作【方法】,才能对数据进行操作。

封装的好处
隐藏实现细节:方法(链接数据库)<–调用(传入参数)
可以对数据进行验证,保证安全合理
实现封装的三个步骤
属性私有化private
提供一个公共的(public)set方法,用于对属性判断并赋值
提供一个公共的(public)get方法,用于获取属性的值

二、继承

继承可以解决代码复用,让我们的编程更加靠近人类思维.当多个类存在相同的属性(变量)和方法时,可以从这些类中抽象出父类,在父类中定义这些相同的属性和方法, 所有的子类不需要重新定义这些属性和方法, 只需要通过 extends 来声明继承父类即可。
在这里插入图片描述

class 子类 extends 父类
{}
继承的好处
代码的复用性提高了
代码的扩展性和维护性提高了
继承的使用细则
子类会自动拥有父类定义的属性和方法
子类又叫派生类,父类又叫超类、基类
子类必须调用父类的构造器, 完成父类的初始化
不能滥用继承, 子类和父类之间必须满足 is-a 的逻辑关系
java 所有类都是 Object 类的子类, Object 是所有类的基类
父类构造器的调用不限于直接父类! 将一直往上追溯直到 Object 类(顶级父类)
子类最多只能继承一个父类(指直接继承), 即 java 中是单继承机制
super 在使用时, 必须放在构造器第一行(super 只能在构造器中使用)
super() 和 this() 都只能放在构造器第一行, 因此这两个方法不能共存在一个构造器
如果希望指定去调用父类的某个构造器, 则显式的调用一下 : super(参数列表)
子类继承了所有的属性和方法, 非私有的属性和方法可以在子类直接访问, 但是私有属性和方法不能在子类直接访问, 要通过父类提供公共的方法去访问
当创建子类对象时, 不管使用子类的哪个构造器, 默认情况下总会去调用父类的无参构造器, 如果父类没有提供无参构造器, 则必须在子类的构造器中用 super 去指定使用父类的哪个构造器完成对父类的初始化工作, 否则, 编译不会通过
继承的本质
先加载父类信息和父类属性
首先看本类是否有该属性或方法,如果本类没有就看父类有没有,直到Object
找到了但不能访问或找不到就报错,如此反复循环寻找
package com.hspedu.extend_;
/**
* 讲解继承的本质
*/
public class ExtendsTheory {
	public static void main(String[] args) {
	Son son = new Son();//内存的布局
	//?-> 这时请大家注意, 要按照查找关系来返回信息
	//(1) 首先看子类是否有该属性
	//(2) 如果子类有这个属性, 并且可以访问, 则返回信息
	//(3) 如果子类没有这个属性, 就看父类有没有这个属性(如果父类有该属性, 并且可以访问, 就返回信息..)
	//(4) 如果父类没有就按照(3)的规则, 继续找上级父类, 直到 Object...
	System.out.println(son.name);//返回就是大头儿子
	//System.out.println(son.age);//返回的就是 39
	//System.out.println(son.getAge());//返回的就是 39
	System.out.println(son.hobby);//返回的就是旅游
	}
} 
class GrandPa { //爷类
	String name = "大头爷爷";
	String hobby = "旅游";
} 
class Father extends GrandPa {//父类
	String name = "大头爸爸";
	private int age = 39;
	public int getAge() {
		return age;
	}
} 
class Son extends Father { //子类
	String name = "大头儿子";
}

在这里插入图片描述

三、多态


总结

封装、 继承和多态每一个特征都很重要。

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

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

相关文章

RabbitMQ 消息中间件

消息中间件 1、简介 消息中间件也可以称消息队列&#xff0c;是指用高效可靠的消息传递机制进行与平台无关的数据交流&#xff0c;并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息队列模型&#xff0c;可以在分布式环境下扩展进程的通信。 当下主流的消息中间…

用这个方法简直开挂!精密空调轻松拿捏

在当今现代社会&#xff0c;空调系统已成为生活和商业环境中不可或缺的一部分。随着气温的波动和能源效率的关注不断增加&#xff0c;精密空调监控技术变得至关重要。 精密空调监控系统可以帮助用户实现更高的能源效率、更稳定的温度控制、降低维护成本&#xff0c;并提供更高水…

做不好数据可视化不丢人,去奥威BI下载模板

有UI&#xff0c;自然可以很大程度上确保BI数据可视化报表审美在线&#xff0c;那没有UI呢&#xff1f;别怕&#xff0c;还有BI数据可视化报表模板&#xff0c;由资深UI亲自打磨&#xff0c;即保留了数据分析、数据可视化的优点&#xff0c;又做到了美观炫酷的要求。一键下载替…

带您了解流程中的人工活动处理方式

这次咱们来介绍 O2OA (翱途) 开发平台流程引擎中的人工活动的处理方式和逻辑&#xff0c;O2OA (翱途) 主要采用拖拽可视化开发的方式完成流程的设计和配置&#xff0c;不需要过多的代码编写&#xff0c;业务人员可以直接进行修改操作。 例如&#xff0c;咱们做一个 “报销申请…

南大通用数据库-Gbase-8a-报错集锦-07-图型化管理工具中存过不可见

目录 一、测试版本 二、排查过程 1、问题现象 2、查看用户权限 3、赋予系统视图权限 一、测试版本 名称值CPUIntel(R) Core(TM) i5-1035G1 CPU 1.00GHz操作系统CentOS Linux release 7.9.2009 (Core)内存3G逻辑核数2Gbase8a版本8.6.2-R43图型化管理工具版本9.5.2.0 二、…

缓冲流详解

缓冲流概述 缓冲流也称为高效流、或者高级流。之前学习的字节流可以称为原始流。 作用&#xff1a;缓冲流自带缓冲区、可以提高原始字节流、字符流读写数据的性能。 字节缓冲流 字节缓冲流性能优化原理&#xff1a; 字节缓冲输入流自带了8KB缓冲池&#xff0c;以后我们直接…

城市内涝积水预防,万宾科技内涝监测仪如何预警?

近几年来城市内涝所引发的安全隐患极为突出&#xff0c;影响着城市道路安全&#xff0c;而且也让市民心中多有惶恐。一旦城市内涝问题出现背后不仅是路面积水问题&#xff0c;更会导致城市无法正常运行&#xff0c;导致市民日常生活和工作受到影响。所以对于排水防涝设施的建设…

gwIvy for 3dMax插件教程

gwIvy for 3dMax插件教程 常春藤旨在在真实世界规模的场景中生长&#xff01; 常春藤在 500m 的树上看起来不太好...所以&#xff0c;尝试使用这个最大功能... 种植常春藤实际上就像编写插件一样简单:)&#xff09; 如果您阅读下面写的内容&#xff0c;那就更容易了... 1) 种植…

Leetcode—125.验证回文串【简单】

2023每日刷题&#xff08;二十三&#xff09; Leetcode—125.验证回文串 实现代码 class Solution { public:bool isPalindrome(string s) {int n s.size();if(n 1 && s[0] ) {return true;}int left 0, right 0;for(right 0; right < n; right) {if(s[rig…

地表水与地下水耦合丨基于QSWATMOD的SWAT-MODFLOW模拟丨模型率定丨案例分析

耦合模型被应用到很多科学和工程领域来改善模型的性能、效率和结果&#xff0c;SWAT作为一个地表水模型可以较好的模拟主要的水文过程&#xff0c;包括地表径流、降水、蒸发、风速、温度、渗流、侧向径流等&#xff0c;但是对于地下水部分的模拟相对粗糙&#xff0c;考虑到SWAT…

C# TabControl实现为每一个TabPage添加关闭按钮

默认情况下TabControl是无法通过界面关闭TabPage的 有些情况下我们需要手动关闭任意一个TabPage&#xff0c;如下图所示 TabControl控件自带属性是无法满足以上需求&#xff0c;下面简单介绍实现过程 1、首先需要对TabPage进行重绘&#xff0c;其目的是为了在TabPage上画出…

千兆光模块和万兆光模块的发展前景与市场分析

随着互联网技术的不断发展&#xff0c;千兆光模块和万兆光模块作为网络传输的核心部件&#xff0c;在数据传输领域已得到广泛的应用。本文将从发展历程、市场前景和应用案例三个方面详细分析千兆光模块和万兆光模块的优势和未来发展前景。 一、千兆光模块和万兆光模块的发展历…

Ubuntu配置网络与静态IP地址的常见方法

这里的环境是虚拟机中的Ubuntu18版本的网络配置&#xff0c;使用虚拟机比较常见&#xff0c;因为主机一般是有线直连&#xff0c;配置很简单 1、NAT模式 虚拟机最简单的联网就是勾选“NAT模式”&#xff0c;不需要任何配置&#xff0c;主机能上网&#xff0c;虚拟机就可以上网…

电脑丢失dll文件一键修复的方法,一分钟快速解决dll问题

动态链接库&#xff08;DLL&#xff09;在Windows操作系统中起到至关重要的作用。DLL文件能够在程序的运行期间提供所需的代码和数据&#xff0c;以参与和影响程序的执行。如果电脑中的某个或多个DLL文件丢失&#xff0c;或遭到破坏&#xff0c;那么涉及到这些文件的程序可能会…

windows cmake x86 x64 下载与安装

cmake 下载路径&#xff1a;cmake 下载选择&#xff1a; 界面下拉选取适合自己的版本 这里是windows x86 x64 &#xff08;x86是32位系统&#xff1b;x64是64位系统&#xff09; 安装&#xff1a; 点击安装。 此处选择添加环境变量 命令提示符 验证查看 cmake 桌面可以…

在Python中使用deepfakes实现AI换脸功能

目录 一、Deepfakes技术原理 二、Deepfakes技术实现方法 三、Deepfakes技术应用与实现代码 四、结论 近年来&#xff0c;深度学习技术在图像处理、计算机视觉和人工智能领域取得了显著的进步。其中&#xff0c;Deepfakes技术是一种基于深度学习的图像合成技术&#xff0c;可…

After Effects 2024 v24.0.2(AE2024)

After Effects 2024是视频特效和动态图形设计软件。以下是After Effects 2024的主要功能和特点&#xff1a; 支持创建各种令人惊叹的视觉效果&#xff0c;例如粒子系统、合成特效、绿屏抠像等。支持动画制作&#xff0c;包括关键帧动画、形状动画、运动跟踪等工具&#xff0c;…

若依框架详细教程

一、若依下载以及配置启动 1、下载地址 2、打开样式 3、数据库引入及配置 导入数据库 配置后端数据库 同时还要redis redis安装教程&#xff1a;安装教程 要是修改端口的话都需要改 打开前端package.json下载这个会提示 4、启动 后端启动 前端启动

超好用的IDEA插件推荐

写完代码还得重复打字编写接口文档&#xff1f;代码量大定位接口定义方法太难找&#xff1f;麻烦&#xff01;写完代码还得复制粘贴到postman进行调试&#xff1f; 这三点太麻烦&#xff1f;今天给大家推荐一款IDEA插件&#xff0c;写完代码IDEA内一键生成API文档&#xff0c;…

2010年3月18日Go生态洞察:从语言的简化到社区的成长

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…