面向对象初级--封装

封装

封装从字面上来理解就是包装的意思

比如鼠标,外部有一个元件,将内部的原件封装起来,至于鼠标内部的细节是什么,我们不需要关心,只需要知道鼠标对外提供了左键、右键、滚动滑轮这三个简单的操作。对于用户来说只要知道左键、右键、滚动滑轮都能完成什么功能就行了。

怎么封装

  1. 属性私有化(使用private关键字进行修饰)
  2. 对外提供简单的操作入口(对外提供公开的读取get()和修改set(),不可以用static修饰
  3. 通常情况下我们访问对象的某个属性不外乎读取 get()和修改set(),所以对外提供的访问入口应该有两个,这两个方法通常被称为 set方法和 get 方法(请注意:set 和get 方法访问的都是某个具体对象的属性不同的对象调用 get 方法获取的属性值不同,所以 set 和get 方法必须有对象的存在才能调用,这样的方法定义的时候不能使用static 关键字修饰,被称为实例方法。实例方法必须使用 “引用”的方式调用。即一个属性对外提供两个set与get方法。

不带static,被称为“实例方法”

实例变量是对象变量,实例方法是对象方法。

实例相关都需要先“New”对象,用“引用.”访问

//get方法
public int getAge(){
return age;
}//set方法
public void setAge(){
age = 18;
}

格式是:

public 返回值类型 get +属性名字母大写(无参){

return xxx;

}

set方法的要求:

public void set + 属性名首字母大写(有一个参数){

xxx = 参数;

}

总之,在java 语言中封装的步骤应该是这样的:
需要被保护的属性使用 private 进行修饰,给这个私有的属性对外提供公开的 set 和 get 方法,其
中set方法用来修改属性的值,get方法用来读取属性的值。并且set和get 方法在命名上也是有规范的,规范中要求 set 方法名是 set +属性名(属性名首字母大写),get 方法名是get +属性名(展性名首字母大写)。其中set 方法有一个参数,用来给属性赋值,set 方法没有返回值,一般在 set 方法内部編写安全控制程序,因为毕竟 set 方法是修改内部数据的,而get 方法不需要参数,返回值类型是该属性所属类型(另外set 方法和 get 方法都不带 static 关键宇,不带 static 关键字的方
法称为实例方法,这些方法调用的时候需要先创建对象,然后通过 “引1用”去调用这些方法,实例方法不能直接采用 “类名〞的方式调用。)
 

package com.itheima.a01staticdemo01;public class Student {private String name;private int age;public  static String teacherName;public Student() {}public Student(String name, int age) {this.name = name;this.age = age;}/*** 获取* @return name*/public String getName() {return name;}/*** 设置* @param name*/public void setName(String name) {this.name = name;}/*** 获取* @return age*/public int getAge() {return age;}/*** 设置* @param age*/public void setAge(int age) {this.age = age;}public void study() {System.out.println(name+"在学习");}public void show(){System.out.println(name+","+age+" ,"+teacherName);}
}

             

package com.itheima.a01staticdemo01;
public class StudentTest {public static void main(String[] args) {//static修饰的techername共享//类名调用变量Student .teacherName="小陈老师";Student s1 = new Student("张三",18);s1.study();s1.show();Student s2 = new Student("李四",26);s2.study();s2.show();}
}

     

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络复习

2024年whut 概述 1.计算机网络的目标:信息传输和资源共享 2.网络协议的要素(必考): 语法:数据信息和控制信息的结构或格式 语义:要发出何种控制信息,完成何种动作,做出何种响应 同…

安装VM虚拟机并创建一个Linux CentOS 7无桌面系统

一、安装vm虚拟机软件 1 下载vm压缩包 百度网盘链接 链接:https://pan.baidu.com/s/1ipiWatBr0wHKMt5c5nQirw?pwdwoy2 提取码:woy2 2.下载完毕后,先将杀毒软件关闭 全部关闭 3. 解压后按照步骤安装即可 按照按照步骤,观看…

计算机网络 —— 应用层(应用层概述及服务方式)

计算机网络 —— 应用层(应用层概述及服务方式) 应用层服务方式C/S(客户端-服务器(C/S)模型)基本概念特点B/S(Browser/Server)基本概念特点应用场景 p2p (对等网络&#…

Java17 --- SpringSecurity之OAuth2

一、OAuth2 1.1、使用github以授权码方式 1.1.1、注册应用程序 1.1.2、测试代码 pom依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-oauth2-client</artifactId></dependency> spring…

一些个人电脑用的小工具软件

1 个人电脑信息管理 如下&#xff1b; 整理自己的电脑信息&#xff1b;录入&#xff0c;保存&#xff0c;查询&#xff1b;添加和更新界面如下&#xff0c; 每次添加、更新之后重新点一下菜单的浏览&#xff1b; 下载&#xff0c; https://download.csdn.net/download/bcb…

自主可控数据库沙龙(北京站 |线下| 报名中)

**数据库沙龙**是一个致力于推动数据库技术创新和发展的高端交流平台&#xff0c;旨在增强国内数据库产业的自主可控性和高质量发展。这个平台汇集了学术界和产业界的顶尖专家、学者以及技术爱好者&#xff0c;通过专题演讲、案例分享和技术研讨等丰富多样的活动形式&#xff0…

LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS

文章汇总 总体来看像是一种带权重的残差&#xff0c;但解决的如何高效问题的事情。 相比模型的全微调&#xff0c;作者提出固定预训练模型参数不变&#xff0c;在原本权重矩阵旁路添加低秩矩阵的乘积作为可训练参数&#xff0c;用以模拟参数的变化量。 模型架构 h W 0 x △…

vue3 中实现 验证码发送 刷新不变倒计时

今天实现一个倒计时的功能 在平常开发前端的功能的时候 不管是 移动端还是web端 我们都会有注册 登录 中的发送验证码功能 实现绑定以及注册功能。今天我主要分享一下当前的验证码实现原理。 有两种做法(我目前认为以及看到的) ① 做一个简单的倒计时 ② 实时监测倒计时 刷…

Web的UI自动化基础知识

目录 1 Web自动化入门基础1.1 自动化知识以及工具1.2 主流web自动化测试工具1.3 入门案例 2 使用工具的API2.1 元素定位2.1.1 id选择器2.1.2 name2.1.3 class_name选择器2.1.4 tag_name选择器2.1.5 link_text选择器2.1.6 partial_link_text选择器2.1.7 xpath选择器2.1.8 CSS选择…

使用python绘制三维直方图

使用python绘制三维直方图 三维直方图定义特点 效果代码 三维直方图 维直方图&#xff08;3D直方图&#xff09;是一种用于展示三维数据分布情况的图表。它扩展了二维直方图的概念&#xff0c;通过在三维空间中绘制柱体来表示数据在三个维度&#xff08;X、Y、Z&#xff09;上…

Excel中多条件判断公式怎么写?

在Excel里&#xff0c;这种情况下的公式怎么写呢&#xff1f; 本题有两个判断条件&#xff0c;按照题设&#xff0c;用IF函数就可以了&#xff0c;这样查看公式时逻辑比较直观&#xff1a; IF(A2>80%, 4, IF(A2>30%, 8*(A2-30%),0)) 用IF函数写公式&#xff0c;特别是当…

Spring配置那些事

一、引言 配置是一个项目中不那么起眼&#xff0c;但却有非常重要的东西。在工程项目中&#xff0c;我们一般会将可修改、易变、不确定的值作为配置项&#xff0c;在配置文件/配置中心中设置。 比方说&#xff0c;不同环境有不同的数据库地址、不同的线程池大小等&#xff0c…

XSKY 在金融行业:新一代分布式核心信创存储解决方案

近日&#xff0c;国家金融监督管理总局印发了《关于银行业保险业做好金融“五篇大文章”的指导意见》&#xff0c;在数字金融领域提出明确目标&#xff0c;要求银行业保险业数字化转型成效明显&#xff0c;数字化经营管理体系基本建成&#xff0c;数字化服务广泛普及&#xff0…

opencv-python(八)

import cv2 import numpy as npheight 160 width 280 image np.zeros((height, width),np.uint8) cv2.imshow(image,image) cv2.waitKeyEx(0) cv2.destroyAllWindows() 二维数组代表一幅灰度图像。 import cv2 import numpy as npheight 160 width 280 image np.zeros((he…

为何云原生是未来?企业IT架构的颠覆与重构(上)

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《未来已来&#xff1a;云原生之旅》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、什么是云原生 2、云原生的背景和起源 背景 起源 关…

ROS机器人小车建模仿真与SLAM

文章目录 一、URDF二、创建小车模型1.创建功能包2.导入依赖3.创建urdf,launch文件&#xff1a;4.可视化 三、添加雷达1.xacro文件2.集成和修改launch3.添加摄像头和雷达 三.GAZEBO仿真四、orbslam2kitti1.下载2.安装编译ORB_SLAM23.运行Kitee数据集 一、URDF ​ URDF&#xff…

Java 集合框架:LinkedList 的介绍、使用、原理与源码解析

大家好&#xff0c;我是栗筝i&#xff0c;这篇文章是我的 “栗筝i 的 Java 技术栈” 专栏的第 014 篇文章&#xff0c;在 “栗筝i 的 Java 技术栈” 这个专栏中我会持续为大家更新 Java 技术相关全套技术栈内容。专栏的主要目标是已经有一定 Java 开发经验&#xff0c;并希望进…

Guitar Pro 8软件安装包下载

简介&#xff1a; Guitar Pro吉他软件为帮助所有吉他爱好者学习、绘谱、创作而设计——包含吉他的现有指法及音色&#xff0c; Guitar Pro能了解各类线谱&#xff0c;看谱练吉他&#xff0c;对谱听示范&#xff0c;记录初创声音。 在做弹拨乐器的滑音、倚音、推弦、揉弦、泛…

python图像处理库-PIL(Pillow)

PIL库全称为Python Imaging Library&#xff0c;即Python图像处理库&#xff0c;是一个在Python中用于处理图像的非常流行的库。 一、PIL介绍 这个库提供了广泛的文件格式支持、高效的内部表示以及相当强大的图像处理功能。 核心图像库旨在快速访问存储在几种基本像素格式中的数…

Excel报表

(Apache POI) 入门案例 P164 使用POI需要导入下面2个坐标&#xff1a; <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId> </dependency> <dependency><groupId>org.apache.poi</groupId>&…