【Java】类与对象、封装(008)

news2024/11/13 14:54:00

目录

类与对象

♦️什么类与对象❓

🎏类的定义

🎃定义一个类

🎃成员变量

🎃成员方法

🎏对象的创建使用和引用传递

🎃对象的创建

🎃对象的引用

封装

♦️什么是封装❓

♦️实现封装

♦️private关键字


类与对象


♦️什么类与对象❓

在Java中,‌类(Class)是一种抽象的数据类型,它定义了一类‌对象所共有的属性和方法。‌对象(Object)则是类的具体实例,它是类的一个具体存在,具有类的属性和行为。‌

类:类是用来创建对象的蓝图或模板。它不占内存空间,只描述了一类对象应有的属性和可以执行的方法。例如,如果一个类名为“Person(人)”,那么它可能包含属性如“name”和“age”,以及方法如“talk”和“walk”

对象:对象是类的具体实现。它占用了内存空间,并且可以执行类中定义的行为。通过使用new关键字和类的构造方法,可以创建类的对象实例。例如,创建“Person”类的对象意味着实例化一个人,这个人可以有具体的名字和年龄,并且可以走路和说话。‌


🎏类的定义


🎃定义一个类

例:创建一个类(人),包括名字,年龄,说话和走路

//创建一个类(人),包括名字,年龄,说话和走路
public class Person{
    String name;
    int age;
    public void Talk()
    {
       System.out.println("说话");
    }
    public void Walk()
    {
        System.out.println("行走");
    }
}

🎃成员变量

成员变量是指类的一些属性定义,标志类的静态特征,它的基本格式如下:

【访问修饰符】【修饰符】【类型】【属性名称】= 【初始值】

  • 访问修饰符:public(公共的);protected(受保护的);无修饰符和private(私有的)。
  • 修饰符:对属性特征的描述:如static,final 等等。 
  • 类型:属性的数据类型,可以是任意类型。 
  • 属性名称:任何合法标识符。 
  • 初始值:赋值给属性的初始值。 
  • 举例:
public class Person{
   private String name;//默认初始值为null
    public static int age;

}

🎃成员方法

成员方法就是对象所具有的动态功能。基本格式如下:

【访问修饰符】【修饰符】【返回值类型】【方法名称】(【参数】)

{

【异常】【方法体】

}

  • 访问修饰符:public(公共的);protected(受保护的);无修饰符和private(私有的)。
  • 修饰符:对属性特征的描述:如static,final,abstract 等等。
  • 返回值类型:方法返回数据的类型。
  • 方法名称:任何合法标识符。
  • 参数:可以有多个,使用逗号分隔。
  • 异常:关键字:throws 【具体异常】
  • 方法体:该方法具体实现功能的地方。
  • 举例:
public class Person{
   public void Talk() {
       
   }
   public void Sleep(){
       
   }
}

🎏对象的创建使用和引用传递


🎃对象的创建

创建对象的一般语法格式如下:

                                类名 对象名 = new 类名([参数列表])

举例:

//已定义Person类,定义对象 
 Person s1=new Person();
 Person s2=new Person();

🎃对象的引用

 对象被创建之后,就可以使用该对象。通过运算符“.”,对象可以实现对自己变量的访问和方法的调用。对象对自己变量访问的语法格式如下:

                        对象名.变量名;

                        对象对自己方法调用的语法格式如下:

                        对象名.方法名([参数值列表]);

举例:



封装


♦️什么是封装❓

对象代表什么,就得封装对应的数据,并提供数据对应的行为。

不需要自己写具体内容,在文库中找关键字即可。

例:人画圆

分析:

  • 思考需创建的类,Person类还是Circle类,即在圆类
  • 将成员方法实现,即画

♦️实现封装

例:人画圆

class Circle{
    
    double radius;
    public void Draw() {
        System.out.println("根据半径为"+radius+"画一个圆");
    }
   }

♦️private关键字

在定义一个类时,给成员变量赋值时需提供一个合适的值,如:

import java.util.Scanner;
class GirlFriend{
    String name;
    int age=18;
    }

当提供的值不符合常理时,代码也不会报错,因此需要用private关键字来进行约束

完整代码:

import java.util.Scanner;
class GirlFriend{
    String name="xiao";
    int age=18;


    public void setAge(int age) {
        this.age = age;
    }
    public int getAge() {
        return age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
public class Main{
    public static void main(String[] args) {
       GirlFriend s=new GirlFriend();

        System.out.println(s.getAge());
        System.out.println(s.getName());
    }
}

总结:

  • private关键字主要用于控制对类成员的访问权限
  • 被private修饰的成员只能在本类中才能访问
  • 针对private修饰的成员变量,如果需要被其他类使用,需提供相应的操作(如set,get)

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

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

相关文章

太阳伴星2600万年回转周期,或许正是它,导致地球生物周期性灭绝?!

我们知道地球已经有46亿年的寿命了,这相比人类生存的时间是极其漫长的。在地球历史中,恐龙在这里生活了1.6亿年,这是地球上相对独特的存在。当然,在恐龙的一生中,它们绝对是地球的统治者。当时,现在统治地球…

stm32入门-----DMA直接存储器存取(上——理论篇)

目录 前言 DMA 1.简介 2.存储器映像 3.DMA结构 4.数据宽度与对齐 5.DMA工作示例 前言 本期我们就开始学习DMA直接存储器存取,DMA是一个数据装运的小助手,执行数据的搬运处理,减少了CPU的负担,在stm32中担当重要的工作。在前…

《Milvus Cloud向量数据库指南》——不同开源向量数据库的适用数据规模及其技术特点深度剖析

在探讨向量数据库领域时,我们不得不提及多个备受瞩目的开源项目,它们各自以其独特的技术优势和适用场景赢得了广泛的关注。本文将深入剖析Milvus Cloud、Chroma、Weaviate、以及Qdrant这几个开源向量数据库在不同数据规模下的应用表现,以及它们各自的技术特点和优势。 引言…

SS9283403 开发环境搭建(二)

1.序 在前一篇“SS928&3403K开发环境搭建(一)”中已经借助Ebaina搭建好的ubuntu对开发板做了测试,这篇记录从零开始搭建SS928&3403K的开发环境; 2.开发前准备 下载VMware Workstation 16 Pro 16.1.0版本 下载ubuntu18.04…

封装导出功能(export)

业务描述: 通过一个button按钮, 实现导出功能, 导出后文件保存到电脑上 目录 一. file-saver 介绍 二. 项目中应用 1. 安装 file-saver库 2.创建 util / exportExcel.js 3. 页面内引入, 使用 4. 页面反馈 展示 一. file-saver 介绍 file-saver是一个用于在前端导出文件…

基于VueCli自定义创建Vue项目架子

基于VueCli自定义创建Vue项目架子 一、VueCli 自定义创建项目1.1安装脚手架 (已安装)1.2.创建项目1.2.1选项1.2.2手动选择功能(按空格可选中)1.2.3选择vue的版本1.2.4是否使用history模式1.2.5选择css预处理1.2.6选择eslint的风格 (eslint 代…

正点原子imx6ull-mini-Linux驱动LED(新字符设备驱动)(3)

经过前几节实验的实战操作,我们已经掌握了 Linux 字符设备驱动开发的基本步骤,字符 设备驱动开发重点是使用 register_chrdev 函数注册字符设备,当不再使用设备的时候就使用 unregister_chrdev 函数注销字符设备,驱动模块加载成功…

Springboot原理相关

目录 配置优先级 bean的管理 获取bean bean的作用域 第三方bean SpringBoot原理 自动配置 配置优先级 在springboot中优先级application.properties>application.yml>application.yaml 虽然支持多种格式配置文件,但是在项目开发中,推荐统…

[MIT6.5840]MapReduce

MapReduce Lab 地址 https://pdos.csail.mit.edu/6.824/labs/lab-mr.html 论文地址 https://static.googleusercontent.com/media/research.google.com/zh-CN//archive/mapreduce-osdi04.pdf 工作原理 简单来讲,MapReduce是一种分布式框架,可以用来处理…

英伟达最强劲敌Groq一招绝杀GPU,反超GPT-4o mini2倍,AI大佬Karpathy:直接飞升AGI!

Llama 3.1 405B被吐槽太笨重? 英伟达对手AI新星Groq一招绝杀:上LPU直接速度翻倍,直接让Llama 3.1飞升AGI! Meta 最新发布的 Llama 3.1 405B 的开源让AI圈不平静了! 追捧者感慨"GPT-4o的能力已握在手中”,而批评者反驳说,大体量消耗这么多算力,有些结果跑得还不如GP…

【内网】安装wget

先是去RPM Search 下载了wget-1.24.5-2.1.x86_64.rpm这个包,结果安装的时候报一堆错 [rootlocalhost ~]# rpm -ivh wget-1.24.5-2.1.x86_64.rpm warning: wget-1.24.5-2.1.x86_64.rpm: Header V3 RSA/SHA512 Signature, key ID 29b700a4: NOKEY error: Failed dep…

不同WEB下的的ApplicationContext的选择

依赖 ApplicationContext类型选择 默认情况下,spring通过选择的web端的框架来选择使用哪个ApplicationContext子类,默认情况下我们一般使用spring mvc框架,这个时候AC的实现类为 org.springframework.boot.web.servlet.context.AnnotationC…

docker安装mysql8自动备份脚本

引用:https://blog.csdn.net/leovnay/article/details/140585094 # 创建两个卷 docker volume ls docker volume create mysqlData docker volume create mysqlSQL# 运行容器 docker run -d --namemysql8 -p 3306:3306 -e MYSQL_ROOT_PASSWORDxxx -e TZAsia/Shangh…

Java小抄|Java中的List与Map转换

文章目录 1 List<User> 转Map<User.id,User>2 基础类型的转换&#xff1a;List < Long> 转 Map<Long,Long> 1 List 转Map<User.id,User> Map<Long, User> userMap userList.stream().collect(Collectors.toMap(User::getId, v -> v, …

自闭症儿童上小学教育方法:个性化关怀,引领全面发展

在教育的征程中&#xff0c;为自闭症儿童提供适合他们的小学教育方法至关重要。这些孩子如同独特的星星&#xff0c;需要我们用个性化的关怀去照亮他们的成长之路&#xff0c;引领他们实现全面发展。 个性化关怀是自闭症儿童小学教育的核心。每个孩子都是独一无二的&#xff0c…

钡铼技术PLC网关:实现PLC数据无缝对接MQTT协议

MQTT 协议概述 MQTT 是用于物联网的标准消息传递协议。它被设计为一种非常轻量级的发布/订阅消息传送&#xff0c;非常适合以较小的代码占用量和网络带宽连接远程设备。 PLC网关是一种专门设计用于连接可编程逻辑控制器&#xff08;PLC&#xff09;与其它网络设备或系统的中间…

元器件基础学习笔记——二极管基础

一、二极管基础 二极管是用半导体材料(硅、硒、锗等)制成的一种电子器件&#xff0c;具有单向导电性&#xff0c;是现代电子技术的基石。它在电子电路中扮演着至关重要的角色&#xff0c;通过与电阻、电容、电感等元器件的合理连接&#xff0c;能够实现整流、检波、限幅、稳压等…

python实现GUI版图片锐化小工具

目录 效果展示代码脚本代码 效果展示 锐化前&#xff1a; 锐化后代码 sharpen_img.py import tkinter as tk from tkinter import filedialog from PIL import Image, ImageTk,ImageFilter import os class ImageViewerApp:def __init__(self, root):self.root rootself.r…

空气净化器CE认证简介

空气净化器中有多种不同的技术和介质&#xff0c;使它能够向用户提供清洁和安全的空气。由于空气净化器本身就和我们的生活息息相关。因此对于产品本身的安全性是消费者首先需要考虑的&#xff0c;另一方面就是其在净化空气上的效率和效果。如今国内的空气净化器随着工艺上的不…

ts 下使用 interactjs 的时候,事件类型该如何定义 InteractEvent

ts 下使用 interactjs 的时候&#xff0c;事件类型该如何定义 InteractEvent 一、问题 interactjs 是一个很好用的给元素添加拖动事件的插件&#xff0c;它可以实现如下的效果。 其官网是 https://interactjs.io/ vitetsvue3 项目中用到了 interactjs 这个库&#xff0c;但在…