当前位置: 首页 > news >正文

【java面向对象的三大特性】封装、继承和多态

目录标题

  • 一、封装(Encapsulation):
  • 二、继承(Inheritance):
  • 三、多态(Polymorphism):
      • 1. 多态的三个必要条件:
      • 2.多态的具体实现:
      • 3.多态的使用场景:
      • 4.多态的好处:
      • 5.多态的注意事项:
      • 6.实际应用场景:

三者之间的关系:

封装是基础,提供了数据的安全性
继承提供了代码的复用性
多态提供了代码的灵活性和扩展性

一、封装(Encapsulation):

// 封装示例
public class Student {// 私有属性(实现封装)private String name;private int age;// 提供公共的访问方法(getter和setter)public String getName() {return name;}public void setName(String name) {// 可以在这里添加数据验证if (name != null && !name.isEmpty()) {this.name = name;}}public int getAge() {return age;}public void setAge(int age) {// 添加年龄验证if (age > 0 && age < 150) {this.age = age;}}
}

封装的特点:

隐藏内部实现细节
对属性的访问进行控制
提高代码的安全性
只能通过规定的方法访问数据

二、继承(Inheritance):

// 父类
public class Animal {protected String name;public void eat() {System.out.println(name + "正在吃东西");}public void sleep() {System.out.println(name + "正在睡觉");}
}// 子类继承父类
public class Dog extends Animal {// 子类可以使用父类的属性和方法// 子类可以有自己的属性和方法private String breed;public void bark() {System.out.println(name + "在汪汪叫");}// 子类可以重写父类的方法@Overridepublic void eat() {System.out.println(name + "在吃骨头");}
}

继承的特点:

子类可以使用父类的属性和方法
子类可以有自己的属性和方法
子类可以重写父类的方法
Java只支持单继承,但可以实现多个接口

三、多态(Polymorphism):

1. 多态的三个必要条件:

// 1. 继承或者实现(继承父类或实现接口)
// 2. 重写(重写父类/接口的方法)
// 3. 父类引用指向子类对象(向上转型)

2.多态的具体实现:

简单示例

// 炒菜的接口
interface Cooking {void cook();  // 炒菜的方法
}// 青椒炒肉
class PepperMeat implements Cooking {public void cook() {System.out.println("炒青椒炒肉");}
}// 番茄炒蛋
class TomatoEgg implements Cooking {public void cook() {System.out.println("炒番茄炒蛋");}
}// 厨师类
class Chef {// 多态体现在这里:接收任何实现了Cooking接口的类public void doCook(Cooking dish) {dish.cook();  // 具体炒什么菜由传入的对象决定}
}//!!!! 多态的使用场景:public class Test {public static void main(String[] args) {Chef chef = new Chef();// 来个青椒炒肉chef.doCook(new PepperMeat());  // 输出:炒青椒炒肉// 来个番茄炒蛋chef.doCook(new TomatoEgg());   // 输出:炒番茄炒蛋/**
想象你是餐厅服务员:
顾客说:"我要点菜"(调用doCook方法)
顾客说具体要什么菜(传入的dish对象):"我要青椒炒肉"(传入PepperMeat对象)
"我要番茄炒蛋"(传入TomatoEgg对象)你把菜单给厨师(调用cook方法)*/}
}

多态的作用是:

代码更灵活
不需要修改厨师的代码,就能让厨师炒新的菜
调用同一个方法,能得到不同的结果

// 1. 基于继承的实现
class Animal {public void makeSound() {System.out.println("动物叫");}
}class Dog extends Animal {@Override  // 重写父类方法public void makeSound() {System.out.println("汪汪汪");}
}class Cat extends Animal {@Override  // 重写父类方法public void makeSound() {System.out.println("喵喵喵");}
}// 2. 基于接口的实现
interface Shape {double getArea();
}class Circle implements Shape {private double radius;@Overridepublic double getArea() {return Math.PI * radius * radius;}
}class Rectangle implements Shape {private double width;private double height;@Overridepublic double getArea() {return width * height;}
}

3.多态的使用场景:

//多态的使用场景:// 1. 方法参数的多态
public class AnimalService {public void makeAnimalSound(Animal animal) {  // 父类引用作为参数animal.makeSound();  // 调用的是子类重写的方法}
}// 使用
AnimalService service = new AnimalService();
service.makeAnimalSound(new Dog());  // 输出:汪汪汪
service.makeAnimalSound(new Cat());  // 输出:喵喵喵// 2. 数组或集合中的多态
Animal[] animals = new Animal[2];
animals[0] = new Dog();  // 向上转型
animals[1] = new Cat();  // 向上转型for(Animal animal : animals) {animal.makeSound();  // 分别输出:汪汪汪、喵喵喵
}

4.多态的好处:

降低耦合度:代码之间的依赖关系变少
提高扩展性:新增子类不需要修改原有代码
同一个方法可以有不同的实现
父类引用可以指向子类对象
接口引用可以指向实现类对象
增加代码的复用性,提高代码的灵活性和扩展性

5.多态的注意事项:

Animal animal = new Dog();
animal.makeSound();  // 正常调用,会调用Dog的方法// 无法调用子类特有的方法
// animal.fetch();  // 错误!Animal类型的引用无法调用Dog特有的方法// 如果需要调用子类特有方法,需要向下转型
if(animal instanceof Dog) {Dog dog = (Dog)animal;  // 向下转型dog.fetch();  // 现在可以调用Dog特有的方法了
}

6.实际应用场景:

// 1. 策略模式
interface PaymentStrategy {void pay(double amount);
}class CreditCardPayment implements PaymentStrategy {@Overridepublic void pay(double amount) {System.out.println("信用卡支付: " + amount);}
}class WeChatPayment implements PaymentStrategy {@Overridepublic void pay(double amount) {System.out.println("微信支付: " + amount);}
}// 2. Spring框架中的多态
interface UserDao {void save();
}@Repository  // 多个实现类,Spring通过多态特性注入
class MysqlUserDao implements UserDao {@Overridepublic void save() {System.out.println("保存到MySQL");}
}

相关文章:

【java面向对象的三大特性】封装、继承和多态

目录标题 一、封装&#xff08;Encapsulation&#xff09;&#xff1a;二、继承&#xff08;Inheritance&#xff09;&#xff1a;三、多态&#xff08;Polymorphism&#xff09;&#xff1a;1. 多态的三个必要条件&#xff1a;2.多态的具体实现&#xff1a;3.多态的使用场景&a…...

【开源免费】基于SpringBoot+Vue.JS校园商铺管理系统(JAVA毕业设计)

本文项目编号 T 191 &#xff0c;文末自助获取源码 \color{red}{T191&#xff0c;文末自助获取源码} T191&#xff0c;文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…...

日常故障排查 - Java程序故障排查

Java程序故障 无论对于任何的故障而言&#xff0c;恢复可用性都是首要目标。但作为一个技术匠人&#xff0c;不能让同一个问题导致多次故障&#xff0c;因此故障的根因剖析以及解决也是很重要的。但是故障根因剖析是需要现场数据来进行分析&#xff0c;因此在故障恢复之前要尽…...

ai数字人分身系统开发源码saas化

#数字人分身系统# #数字人系统源码# #ai数字人123 123# 云罗抖去推数字人分身系统是一款融合了形象克隆、声音克隆、AI数字人分身、AI智能剪辑、智能文案等各种AI技术一体化的短视频营销工具&#xff0c;其核心功能优势主要体现在以下几方面&#xff1a; 真实度高&#xf…...

DeepSeek免费部署到WPS或Office

部署到WPS - 通过OfficeAI插件接入&#xff1a; - 准备工作&#xff1a;安装最新版本的WPS Office软件&#xff1b;访问DeepSeek官网&#xff0c;点击右上角的“API开放平台”&#xff0c;登录账号&#xff08;若无账号需先注册&#xff09;&#xff0c;登录成功后&#xff0c;…...

vue2和vue3插槽slot最通俗易懂的区别理解

在 Vue 的组件通信中&#xff0c;slot&#xff08;插槽&#xff09;的编译优化是一个重要的性能提升点。以下是 Vue2 和 Vue3 在 slot 处理上的差异及优化原理&#xff0c;用更直观的方式解释&#xff1a; Vue2 的 Slot 更新机制 想象一个父子组件场景&#xff1a; 父组件&am…...

生成式人工智能:技术革命与应用图景

(这文章有些地方看不懂很正常&#xff0c;因为有太多生词&#xff0c;需要对 计算机/人工智能 研究至深的人才能看懂&#xff0c;遇到不会的地方用浏览器搜索或跳过&#xff09; 引言 2023年被称我们为"生成式AI元年"&#xff0c;以GPT-4、DALL-E 3、Stable Diffusi…...

关于Dest1ny:我的创作纪念日

Dest1ny 因为这是csdn任务&#xff0c;我就稍微“写”了一下&#xff01; 如果大家真的有什么想聊的或者想一起学习的&#xff0c;欢迎在评论区或者私信中与我讨论&#xff01; 2025想说的话 我就把我想说的写在前面&#xff01; 不用对未来焦虑&#xff0c;不要觉得自己走…...

AI学习记录 - 最简单的专家模型 MOE

代码 import torch import torch.nn as nn import torch.nn.functional as F from typing import Tupleclass BasicExpert(nn.Module):# 一个 Expert 可以是一个最简单的&#xff0c; linear 层即可# 也可以是 MLP 层# 也可以是 更复杂的 MLP 层&#xff08;active function 设…...

【C++内存管理】—— 策略、陷阱及应对之道

欢迎来到ZyyOvO的博客✨&#xff0c;一个关于探索技术的角落&#xff0c;记录学习的点滴&#x1f4d6;&#xff0c;分享实用的技巧&#x1f6e0;️&#xff0c;偶尔还有一些奇思妙想&#x1f4a1; 本文由ZyyOvO原创✍️&#xff0c;感谢支持❤️&#xff01;请尊重原创&#x1…...

分布式版本控制系统---git

Git&#xff1a;从基础到进阶的全面指南 Git 是一个分布式版本控制系统&#xff0c;广泛应用于软件开发中&#xff0c;用于跟踪文件的更改、支持团队协作以及管理项目代码。通过 Git&#xff0c;开发者可以在本地拥有完整的项目历史记录&#xff0c;进行离线开发&#xff0c;并…...

pg_sql关于时间的函数

1、时间戳和日期之间的相互转换 时间戳转日期&#xff08;时间戳为数值类型&#xff0c;若为字符型需进行转换&#xff09; # 保留到秒&#xff1a;2025-10-02 04:46:40 &#xff08;字符型转换数值型&#xff09; select to_timestamp(1759351600::bigint)# 保留到日&#x…...

【Kafka】Windows下安装Kafka(全面)

目录 1.前提条件 2.下载 3.安装 4.环境变量配置 5.验证 1.前提条件 参考版本&#xff1a;zookeeper为3.6.4 kafka版本为3.5.1 1.先安装zookeeper&#xff1a; 【Zookeeper】Windows下安装Zookeeper&#xff08;全面&#xff09;-CSDN博客https://blog.csdn.net/…...

【Qt】:概述(下载安装、认识 QT Creator)

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;Qt 目录 一&#xff1a;&#x1f525; 介绍 &#x1f98b; 什么是 QT&#x1f98b; QT 发展史&#x1f98b; Qt版本&#x1f98b; QT 优点 一&#xff1a;&#x1f525; 搭建Qt开发环境 &#x1f9…...

Netty源码解析之异步处理(二):盛赞Promise中的集合设计

前言 在阅读Netty源码的过程中&#xff0c;我越来越相信一句话&#xff1a;“Netty的源码非常好&#xff0c;质量极高&#xff0c;是Java中质量最高的开源项目之一”。如果认真研究&#xff0c;会有一种遍地黄金的感觉。 本篇文件我将记录一下鄙人在Promise的实现类DefaultPr…...

Spring Boot 的约定优于配置,你的理解是什么?

“约定优于配置” 是 Spring Boot 极为重要的设计理念&#xff0c;它极大地简化了 Spring 应用的开发流程&#xff0c;下面从多个方面详细解释这一理念&#xff1a; 减少配置复杂性 传统开发的痛点 在传统的 Spring 开发里&#xff0c;配置工作相当繁琐。以配置 Spring MVC …...

图形渲染(一)——Skia、OpenGL、Mesa 和 Vulkan简介

1.Skia —— 2D 图形库 Skia 是一个 2D 图形库&#xff0c;它的作用是为开发者提供一个高层次的绘图接口&#xff0c;方便他们进行 2D 图形渲染&#xff08;比如绘制文本、形状、图像等&#xff09;。Skia 本身不直接管理 GPU 或进行底层的渲染工作&#xff0c;而是通过 底层图…...

git使用,注意空格

第一节 安装完成后&#xff0c;找个目录用于存储,打开目录右击选择git bash here 命令1 姓名 回车 git config --global user.name "li" 命令2 邮箱 回车 git config --global user.email "888163.com" 命令3 初始化新仓库&#xff0c;下载克隆 回…...

以用户为中心,汽车 HMI 界面设计的创新之道

在汽车智能化飞速发展的当下&#xff0c;汽车 HMI&#xff08;人机交互界面&#xff09;成为连接人与车的关键桥梁。如何打造出优秀的 HMI 界面&#xff1f;答案是以用户为中心&#xff0c;探索创新之道。 用户需求是汽车 HMI 界面设计的指南针。在设计前期&#xff0c;深入调…...

CentOS安装Docker,Ubuntu安装Docker,Docker解决方案

文章目录 CentOS7安装DockerUbuntu修改Docker镜像源docker设置容器自动启动启动时加--restartalways如果已经过运行的项目docker compose设置容器自启动 docker file修改时区docker在容器执行命令简单粗暴的办法安装curl docker compose命令安装docker compose Docker WEB 图形…...

c#中“事件-event”的经典示例与理解

在C#编程语言中&#xff0c;事件&#xff08;Event&#xff09;是一个非常重要的概念&#xff0c;它提供了一种松耦合的方式&#xff0c;让对象间能够通知彼此&#xff0c;而无需直接联系。事件的使用可以让我们的代码更加灵活、可扩展且易于维护。 事件可以视作委托的实例&…...

git bash在github的库中上传或更新本地文件

一、将本地文件上传到 GitHub 仓库 1. 创建 GitHub 仓库 如果你还没有在 GitHub 上创建仓库&#xff0c;首先需要创建一个新的仓库&#xff1a; 登录到 GitHub。点击右上角的 按钮&#xff0c;选择 New repository。给你的仓库起个名字&#xff0c;并选择 Public 或 Privat…...

【编程实践】vscode+pyside6环境部署

1 PySide6简介 PySide6是Qt for Python的官方版本&#xff0c;支持Qt6&#xff0c;提供Python访问Qt框架的接口。优点包括官方支持、LGPL许可&#xff0c;便于商业应用&#xff0c;与Qt6同步更新&#xff0c;支持最新特性。缺点是相比PyQt5&#xff0c;社区资源较少。未来发展…...

vue 文件下载(导出)excel的方法

目前有一个到处功能的需求&#xff0c;这是我用过DeepSeek生成的导出&#xff08;下载&#xff09;excel的一个方法。 1.excel的文件名是后端生成的&#xff0c;放在了响应头那里。 2.这里也可以自己制定文件名。 3.axios用的是原生的axios&#xff0c;不要用处理过的&#xff…...

服务器延迟给视频网站造成的影响

在数字化时代中&#xff0c;网络视频已经成为人们日常娱乐和获取信息的重要平台&#xff0c;网络视频的流畅性会影响着用户的体验度&#xff0c;那么&#xff0c;当服务器出现延迟会对视频网站造成哪些影响呢&#xff1f;本文就来共同了解一下吧&#xff01; 当所使用的服务器由…...

django上传文件

1、settings.py配置 # 静态文件配置 STATIC_URL /static/ STATICFILES_DIRS [BASE_DIR /static, ]上传文件 # 定义一个视图函数&#xff0c;该函数接收一个 request 参数 from django.shortcuts import render # 必备引入 import json from django.views.decorators.http i…...

Mysql数据库

一.数据定义语言DDL 一.概述 DDL用于定义和管理数据库的结构 DDL关键字&#xff1a;1.CREATE; 2.ALTER; 3.DROP 二.SQL命名规定和规范 1.标识符命名规则 2.标识符命名规范 三.库管理 1. CREATE DATABASE 数据库名; 2. CREATE DATABASE IF NOT EXISTS 数据库名; 3. CREATE…...

机器学习 - 大数定律、可能近似正确学习理论

一、大数定律&#xff1a; 大数定律是概率论中的一个基本定理&#xff0c;其核心思想是&#xff1a;当独立重复的随机试验次数足够大时&#xff0c;样本的平均值会趋近于该随机变量的期望值。下面从直观和数学两个角度来说明这一概念&#xff1a; 1. 直观理解 重复试验的稳定…...

Kotlin 2.1.0 入门教程(十七)接口

接口 接口可以包含抽象方法的声明&#xff0c;也可以包含方法的实现。 接口与抽象类的不同之处在于&#xff0c;接口无法存储状态。接口可以拥有属性&#xff0c;但这些属性要么必须是抽象的&#xff0c;要么就得提供访问器的实现。 接口使用 interface 关键字来定义&#x…...

USB Flash闪存驱动器安全分析(第一部分)

翻译原文链接&#xff1a;Hacking Some More Secure USB Flash Drives (Part I) | SySS Tech Blog 文章翻译总结&#xff1a;文章对一些具有AES硬件加密的USB闪存驱动器的网络安全分析研究。研究由SySS的IT安全专家Matthias Deeg进行&#xff0c;他在2022年初发现了几个安全漏…...

报名丨Computer useVoice Agent :使用 TEN 搭建你的 Mac Assistant

与 TEN 相聚在「LET’S VISION 2025」大会&#xff0c;欢迎来展位上跟我们交流。这次我们还准备了一场聚焦「computer use」的工作坊&#xff0c;功能新鲜上线&#xff0c;线下首波体验&#xff01; &#x1f4c5; TEN 展位&#xff1a;2025年3月1日-2日 TEN workshop&#x…...

常用架构图:业务架构、产品架构、系统架构、数据架构、技术架构、应用架构、功能架构及信息架构

文章目录 引言常见的架构图I 业务架构图-案例模块功能说明1. 用户界面层 (UI)2. 应用服务层3. 数据管理层4. 基础设施层业务流程图示例技术实现II 功能架构图 -案例功能模块说明1. 船舶监控模块2. 报警管理模块3. 应急响应模块4. 通信管理模块5. 数据分析模块数据管理层基础设施…...

微信小程序的制作

制作微信小程序的过程大致可以分为几个步骤&#xff1a;从环境搭建、项目创建&#xff0c;到开发、调试和发布。下面我会为你简要介绍每个步骤。 1. 准备工作 在开始开发微信小程序之前&#xff0c;你需要确保你已经完成了以下几个步骤&#xff1a; 注册微信小程序账号&…...

C# 特性 学习记录

在C#中&#xff0c;特性&#xff08;Attribute&#xff09;是一种用于向代码元素&#xff08;如类、方法、属性等&#xff09;添加元数据的机制。特性本身不会直接影响代码的执行&#xff0c;但它们可以提供额外的信息&#xff0c;这些信息可以在运行时通过反射&#xff08;Ref…...

DBeaver clickhouse 时区不对 时间少了8小时

选择DataBase选择Driver Manager选择clickhouse数据库点中之后&#xff0c;选择编辑添加两个全局属性 use_server_time_zone use_time_zone 鼠标移动到User Properties上&#xff0c;右键即可添加一列空白 然后断开重连...

如何测试和验证CVE-2024-1430:Netgear R7000 路由器信息泄露漏洞分析

CVE-2024-1430 是一个影响 Netgear R7000 路由器的安全漏洞&#xff0c;漏洞来源于该路由器 Web 管理界面的信息泄露问题。攻击者通过访问 /currentsetting.htm 文件&#xff0c;可能泄露敏感信息&#xff0c;如 Wi-Fi 密码等。 在测试和验证 CVE-2024-1430 时&#xff0c;您需…...

Express 中间件是什么

在 Express 里&#xff0c;中间件是具备访问请求对象&#xff08;req&#xff09;、响应对象&#xff08;res&#xff09;以及应用程序请求-响应循环中的下一个中间件函数&#xff08;一般用next表示&#xff09;的函数。 一、中间件的定义与调用顺序 在 Express 应用中&…...

【做一个微信小程序】校园地图页面实现

前言 上一个教程我们实现了小程序的一些的功能&#xff0c;有背景渐变色&#xff0c;发布功能有的呢&#xff0c;已支持图片上传功能&#xff0c;表情和投票功能开发中&#xff08;请期待&#xff09;。下面是一个更高级的微信小程序实现&#xff0c;包含以下功能&#xff1a;…...

(萌新入门)如何从起步阶段开始学习STM32 —— 0.碎碎念

目录 前言与导论 碎碎念 所以&#xff0c;我到底需要知道哪些东西呢 从一些基础的概念入手 常见的工具和说法 ST公司 MDK5 (Keil5) CubeMX 如何使用MDK5的一些常用功能 MDK5的一些常见的设置 前言与导论 非常感谢2301_77816627-CSDN博客的提问&#xff0c;他非常好奇…...

java nio 原理 非阻塞IO Netty

一、为什么必须去了解NIO 首先你需要之后Netty的主要实现手段就是Nio,很多人一直学不明白Netty&#xff0c;根本原因是 除了日常开发中很难能够实践&#xff0c;很大一部分原因是不熟悉NIO&#xff0c;事实上真正熟悉了NIO和它背后的原理之后&#xff0c;去查看Netty的源码就有…...

【ClickHouse】Ubuntu下离线安装ClickHouse数据库并使用DBeaver连接

目录 0. 安装前准备1 安装ClickHouse1.1 下载安装包1.2 离线安装1.3 配置密码1.4 启动ClickHouse服务 2 DBeaver连接配置2.1 下载ClickHouse驱动2.2 DBeaver配置2.2.1 配置主要参数2.2.2 配置驱动 2.3 常见问题处理2.3.1 修改远程登录配置2.3.2 更新驱动配置 0. 安装前准备 有…...

vue2打包带路径的项目,刷新404问题解决

问题描述 Vue 2 项目打包时设置了 publicPath: /web/&#xff0c;并通过 Nginx 配置访问 http://ip/web 时可以正常加载首页&#xff0c;但刷新页面时出现 404 错误 原nginx的配置 location /web {alias /www/dist; # 静态文件地址try_files $uri $uri/ /index.html;index i…...

【计算机视觉】文本识别

计算机视觉&#xff0c;广义的文本识别是指对输入的图像进行分析处理&#xff0c;识别出图像中的文字信息&#xff0c;这里的图像可以使传统的文档图像&#xff0c;也可以是现实世界中的场景图像。 简介 无论是传统方法还是基于深度深度学习的方法&#xff0c;完整的文本识别…...

Vue和React的区别

组件开发方式&#xff1a; Vue 使用单文件组件&#xff08;SFC&#xff09;, HTML, JS 和 CSS 在一个文件内实现 <template><div class"my-component"><!-- HTML模板 --></div> </template><script> export default {// JavaScr…...

STM32 是什么?同类产品有哪些

STM32 是什么&#xff1f; STM32 是由意法半导体&#xff08;STMicroelectronics&#xff09;推出的基于 ARM Cortex-M 内核 的 32 位微控制器&#xff08;MCU&#xff09;系列。它专为高性能、低功耗的嵌入式应用设计&#xff0c;广泛应用于以下领域&#xff1a; 工业控制&am…...

Git学习使用笔记

目录 一、基本介绍 1.1 版本控制 1.2 版本控制软件的基础功能 1.3 多人协作开发/集中式版本控制 1.4 分布式版本控制 二、Git安装 2.1下载git 2.2 使用Github Desktop软件 2.2.1 创建本地仓库 2.2.2 删除本地仓库 2.2.3 仓库文件操作 2.2.4 多人协作 2.2.4.1 分…...

Bash 中的运算方式

目录 概述&#xff1a; 1. (()) 运算符 2. let 命令 3. expr 命令 4. $[] 直接运算 5. bc&#xff08;计算器&#xff0c;支持浮点数&#xff09; 6. awk&#xff08;强大的文本处理工具&#xff0c;也可计算&#xff09; 概述&#xff1a; Bash 本身只支持整数运算&am…...

NLP Word Embeddings

Word representation One-hot形式 在上一周介绍RNN类模型时&#xff0c;使用了One-hot向量来表示单词的方式。它的缺点是将每个单词视为独立的&#xff0c;算法很难学习到单词之间的关系。 比如下面的例子&#xff0c;即使语言模型已经知道orange juice是常用组合词&#xf…...

Unity UI个人总结

个人总结&#xff0c;太简单的直接跳过。 一、缩放模式 1.固定像素大小 就是设置一个100x100的方框&#xff0c;在1920x1080像素下在屏幕中长度占比1/19&#xff0c;在3840x2160&#xff0c;方框在屏幕中长度占比1/38。也就是像素长款不变&#xff0c;在屏幕中占比发生变化 2.…...

开发基础(8):鸿蒙图表开发

mpchart mpchart是一个包含各种类型图表的图表库,主要用于业务数据汇总,例如销售数据走势图,股价走势图等场景中使用,方便开发者快速实现图表UI,mpchart主要包括线形图、柱状图、饼状图、蜡烛图、气泡图、雷达图、瀑布图等自定义图表库。 柱状图 导入import {BarChart, …...