Java 面向对象的三大特性

news2024/11/24 12:07:51
面向对象编程有三大特征: 封装、继承和多态。

1.封装

1)封装介绍
封装(encapsulation)就是把抽象出的数据[属性]和对数据的操作[方法]封装在一起数据被保护在内部.程序的其它部分只有通过被授权的操作[方法],才能对数据进行操作。
2)封装的理解和好处
隐藏实现细节 : 方法(连接数据库)<--调用(传入参数.)2)可以对数据进行验证,保证安全合理
Person {name, age}
Person p = new Person();
p.name = "iack";
p.age = 1200;
3)封装的实现步骤(三步)
(1)将属性进行私有化private[不能直接修改属性]
      private int Xxx;
(2)提供一个公共的(public)set方法,用于对属性判断并赋值
    public void setXxx(类型 参数名){//Xxx   表示某个属性
  //加入数据验证的业务逻辑
  属性 = 参数名;
  }
(3)提供一个公共的(public)get方法,用于获取属性的值
        public 数据类型 getXxx(){//权限判断,Xxx 某个属性
           return Xxx;
       }

2.继承

1)继承介绍
继承可以解决代码复用 , 让我们的编程更加靠近人类思维 . 当多个类存在相同的属性 ( 变量 ) 和方法时 , 可以从这些类中抽象出父类, 在父类中定义这些相同的属性和方法,所有的子类不需要重新定义这些属性和方法,只需要通过 extends 来声明继承父类即可。画出继承的示意图
2)继承的基本语法
 class 子类 extends 父类{}
1)子类就会自动拥有父类定义的属性和方法
2)父类又叫 超类,基类
3)子类又叫派生类
3)super基本介绍
super 代表父类的引用,用于访问父类的属性、方法、构造器
(1)访问父类的属性,但不能访问父类的private属性
(2)super.属性名:访问父类的方法,不能访问父类的private方法super.方法名(参数列表):
(3)访问父类的构造器:
(4)super(参数列表);只能放在构造器的第一句,只能出现一句!
super和this的比较

3.多态

1)多态基本介绍
方法或对象具有多种形态。是面向对象的第三大特征,多态是建立在封装和继承基础之上的。
(1)一个对象的编译类型和运行类型可以不一致
(2)编译类型在定义对象时,就确定了,不能改变
(3)运行类型是可以变化的编译类型看定义时 = 号 的左边,运行类型看 = 号的 右边
比如:
Animal animal = new Dog(); [编译类型是Animal,运行类型Dog]
animal = new Cat();[animal 的运行类型变成了 Cat, 编译类型仍然是 Animal)
2)多态注意事项和细节讨论
多态的 前提是: 两个对象(类)存在继承关系
多态的 向上转型
(1)本质:父类的引用指向了子类的对象
(2) 语法:父类类型 引用名 = new 子类类型();
(3)特点: 编译类型看左边,运行类型看右边。
可以调用父类中的所有成员(需遵守访问权限),
不能调用子类中特有成员;
最终运行效果看子类的具体实现!
多态的 向下转型
(1)语法: 子类类型  引用名  (子类类型)父类引用;
(2)只能强转父类的引用,不能强转父类的对象
(3)要求父类的引用必须指向的是当前目标类型的对象
(4)当向下转型后,可以调用子类类型中所有的成员
3)java的动态绑定机制*
Java 重要特性 : 动态绑定机制
java的动态绑定机制: .
(1)当调用对象方法的时候,该方法会和该对象的内存地址/运行类型绑定
(2)当调用对象属性时,没有动态绑定机制,哪里声明,那里使用
示例:

public class DynamicBinding {

	public static void main(String[] args) {
		//a的编译类型A 运行类型B
		A a=new B();//向上转型
		System.out.println(a.i);//调用对象属性,输出10
		System.out.println(a.sum());//调用对象方法,输出40
		System.out.println(a.sum1());//调用对象方法,输出30
	}
}
class A{//父类
	public int i=10;
	//动态绑定机制
	public int sum(){//父类sum()
		return getI()+10;//
	}
	public int sum1(){//父类sum1()
		return i+10;//
	}
	private int getI() {
		return i;
	}
}
class B extends A{//子类
	public int i=20;
	//动态绑定机制
	public int sum1(){
		return i+10;//
	}
	public int sum(){
		return getI()+20;//
	}
	private int getI() {//子类getI()
		return i;
	}
}

 

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

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

相关文章

Windows安装Node.js

1、Node.js介绍 ①、Node.js简介 Node.js是一个开源的、跨平台的JavaScript运行环境&#xff0c;它允许开发者使用JavaScript语言来构建高性能的网络应用程序和服务器端应用。Node.js的核心特点包括&#xff1a; 1. 事件驱动: Node.js采用了事件驱动的编程模型&#xff0c;通…

美股游戏股分析:微软收购游戏公司动视暴雪将迎来一个重要里程碑

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 总结&#xff1a; &#xff08;1&#xff09;微软(MSFT)收购动视暴雪(ATVI)的交易在做出重大让步后目前已经获得了欧盟和美国的监管批准。 &#xff08;2&#xff09;英国英国竞争和市场管理局(CMA)最初对微软收购动视暴雪…

SpringCloud Alibaba - 分布式事务理论(CAP 定理 和 BASE 理论)

目录 一、分布式事务理论 1.1、分布式事务问题 1.2、什么是分布式事务 1.3、解决分布式事务思路 1.3.1、CAP 定理 a&#xff09;Consistency&#xff08;一致性&#xff09; b&#xff09;Availability&#xff08;可用性&#xff09; c&#xff09;Partition tolerance…

反向生成:根据mybatis生成的Class实体类对象反向生成建表语句

微信公众号&#xff1a;大数据高性能计算 针对数据库不小心被删除的情况&#xff0c;以及需要逆向查看某个开源项目数据库表的情况时&#xff0c;往往需要逆向工程。 在这里我们假设 id 字段为主键。在生成 SQL 建表语句时&#xff0c;我们添加了 PRIMARY KEY (id) 来定义 i…

温控仪工作原理

温控仪的工作原理&#xff0c;是通过温度探头或热电偶反馈的电信号&#xff0c;温控仪将得到的电信号转化成温度值&#xff0c;根据设定的温度值&#xff0c;控制加热器的接通和断开来达到控制温度范围的&#xff1a; 1、温度探头或热电偶受温度变化时&#xff0c;会产生微弱的…

CDN技术与企业网站建设:解决疑问与明智选择

介绍CDN技术与疑问 在数字时代&#xff0c;网站是企业线上存在的门户&#xff0c;因此网站的性能和安全至关重要。为了解决一些与网站建设和性能相关的疑问&#xff0c;让我们首先来了解CDN技术。 什么是CDN技术&#xff1f; CDN&#xff0c;即内容分发网络&#xff08;Conte…

Langchain-Chatchat项目:1.2-Baichuan2项目整体介绍

由百川智能推出的新一代开源大语言模型&#xff0c;采用2.6万亿Tokens的高质量语料训练&#xff0c;在多个权威的中文、英文和多语言的通用、领域benchmark上取得同尺寸最佳的效果&#xff0c;发布包含有7B、13B的Base和经过PPO训练的Chat版本&#xff0c;并提供了Chat版本的4b…

【重拾C语言】六、批量数据组织(四)线性表—栈和队列

目录 前言 六、批量数据组织——数组 6.1~3 数组基础知识 6.4 线性表——分类与检索 6.5~7 数组初值&#xff1b;字符串、字符数组、字符串数组&#xff1b;类型定义 typedef 6.8 线性表—栈和队列 6.8.1 栈&#xff08;Stack&#xff09; 全局变量 isEmpty() isFull…

TCP原理特性详解

文章目录 可靠传输机制1.确认应答2.超时重传2.连接管理1.三次握手2.四次挥手 传输效率1.滑动窗口2.流量控制3.拥塞控制4.延时应答5.捎带应答 面向字节流粘包问题 TCP异常情况 可靠传输机制 可靠性&#xff1a;即发送方知道数据是发送成功了&#xff0c;还是失败了。 1.确认应答…

Github-使用2FA验证:使用python实现TOTP验证,python实现github的2FA验证

github新增了2FA验证了&#xff0c; 1、扫描二维码&#xff0c;获取对应字符串 或点击setup key ,获取字符串 2、使用python来生成校验码 安装&#xff1a; pip install pytop import pyotp key XKDRR4WH3LY2WXPH print(pyotp.TOTP(key).now()) 3、将生成的6个验证码&…

第一章 概述 | 计算机网络(谢希仁 第八版)

文章目录 第一章 概述重要内容计算机网络的一些相关知识互联网概述因特网的标准化工作互联网的组成计算机网络的类别计算机网络的性能指标计算机网络的体系结构——-分层次的体系结构 第一章 概述 重要内容 互联网边缘部分和核心部分的作用&#xff0c;以及分组交换的概念 计…

学习记忆——宫殿篇——记忆宫殿——记忆桩——身体——记忆星座

我们在与人攀谈的时候&#xff0c;可以从以下几个维度入手&#xff0c;如&#xff1a;年龄、星座、爱好、工作等。 两点记忆的技巧以及一点知识延伸 两点记忆技巧&#xff1a; 1、第一次见面时要创建回忆线索 2、脑中回忆交流画面&#xff0c;加深线索 一点知识延伸&#xff1…

NoSQL之Redis 主从复制配置详解及哨兵模式

目录 1 Redis 主从复制 1.1 主从复制的作用 1.2 主从复制流程 2 搭建Redis 主从复制 2.1 安装 Redis 2.2 修改 Redis 配置文件&#xff08;Master节点操作&#xff09; 2.3 修改 Redis 配置文件&#xff08;Slave节点操作&#xff09; 2.4 验证主从效果 3 Redis 哨兵模…

自动拟人对话机器人在客户服务方面起了什么作用?

在当今数字时代&#xff0c;企业不断寻求创新的方法来提升客户服务体验。随着科技的不断进步和消费者期望的提升&#xff0c;传统的客户服务方式逐渐无法满足现代消费者的需求。因此&#xff0c;许多企业正在积极探索利用新兴技术来改进客户服务&#xff0c;自动拟人对话机器人…

javaScript关于闭包的理解

首先在了解闭包之前&#xff0c;我们要了解一下环境和作用域 1.环境和作用域 日常生活中我们生活的环境由周边建设如公园&#xff0c;小区&#xff0c;超市构成的。这就构成了环境 在计算机当中环境就是一块内存的数据。 环境是有作用范围的&#xff0c;eg:武汉周边的建设一…

YOLOv8 Tensorrt部署详细介绍(小白从0到1,不会你砍我)

下载YOLOv8项目和Tensorrt部署项目 git clone https://github.com/xiaocao-tian/yolov8_tensorrt.git git clone https://github.com/ultralytics/ultralytics.git 下载yolov8s模型 在YOLOv8项目中新建weights文件夹&#xff0c;将yolov8s.pt放入 运行tensorrt项目中gen_wts…

RabbitMQ 介绍与 SpringBootAMQP使用

一、MQ概述 异步通信的优点&#xff1a; 耦合度低吞吐量提升故障隔离流量削峰 异步通信的缺点&#xff1a; 依赖于Broker的可靠性、安全性、吞吐能力架构复杂&#xff0c;业务么有明显的流程线&#xff0c;不方便追踪管理 什么是的MQ MQ&#xff08;Message Queue&#xf…

选择适合建筑公司的企业网盘平台

随着城市化进程的加速&#xff0c;越来越多的人开始关注乡村生活品质。Z公司以其标准化产品和优质资源整合&#xff0c;为回乡建房人群提供了一种全新的、高品质的整体解决方案。 Z公司深入调研了10W的回乡建房人群需求&#xff0c;组建了设计、工艺、供应链方面的专家团队&…

KUKA机器人通过直接输入法设定负载数据和附加负载数据的具体操作

KUKA机器人通过直接输入法设定负载数据和附加负载数据的具体操作 设置背景色: 工具负载数据 工具负载的定义: 工具负载数据是指所有装在机器人法兰上的负载。它是另外装在机器人上并由机器人一起移动的质量。需要输入的值有质量、重心位置、质量转动惯量以及所属的主惯性轴。…

边坡安全监测系统:守护边坡稳定的重要工具

在工程建设中&#xff0c;边坡安全监测系统一直被认为是掌握边坡安全及其支护结构维护决策系统的关键支撑条件。这一系统的主要目的在于确定边坡结构的稳定性&#xff0c;监控支护结构的承载能力、运营状态和耐久性能&#xff0c;并对边坡稳定性进行实时监控。 一、边坡安全监测…