面向对象基础2-关键字

2023-11-11

目录

前言

一、private关键字

二、private关键字的使用

 三、this关键字

四、public关键字

五、protected

六、default

总结



前言

一、private关键字

private属于私有访问权限,用于修饰类的属性和方法。

为什么要用private关键字呢?

原因:通过对象直接访问成员变量的方式会有数据安全隐患。所以使用private关键字进行修饰。

private关键字是什么?

  • 是一个权限修饰符
  • 可以修饰成员变量(成员变量和成员方法)
  • 作用是保护成员不被别的类使用,被private修饰的成员只能在本类中才能访问

那么对于private修饰的成员变量,如果想要被其他类使用的话,会提供相应的操作:

  • 提供“get变量名”方法,用于获取成员变量的值,方法用public修饰
  • 提供“get变量名(参数)”方法,用于设置成员变量的值,方法用public修饰

例:

public class Test{
    public static void main(String[] args){
        //成员变量
        String name;
        private int age;    //私有成员变量
        
        提供get/set方法
        public void setAge(int a){
            age = a;
        }
        
        public int getAge(){
            return age;
        }
    }
}

         

二、private关键字的使用

首先写一个标准的学生类:

public class Student{
    public static void main(String[] args){
        //成员变量
        private String name;
        private int age;    //私有成员变量

        public void setName(String n){
            name = n;
        }
        
        public String getName(){
            return name;
        }
        
        提供get/set方法
        public void setAge(int a){
            age = a;
        }
        
        public int getAge(){
            return age;
        }
        
        public void show(){
            System.out.println(name + "," age);
        }
    }
}

在写一个学生的实现类:
 

public class StudentDome(){
    public static void main(String[] args){
        //创建对象
        Student s = new Student();

        //使用set方法给成员变量赋值
        s.setName("张三");
        s.setAge(20);
        
        //输出信息
        s.show();

        使用get方法获取成员变量的值
        s.getName();
        s.getAge();
    }
}

 三、this关键字

为什么用this呢?解决局部变量隐藏成员变量的问题。

this代表所在类的对象的引用。

1、this修饰的变量用于指代成员变量

  • 方法的形参如果与成员变量同名,不带this修饰的变量指的是形参,而不是成员变量
  • 方法的形参没有与成员变量同名,不带this修饰的变量指的是成员变量

这里有一个学生类:
 

public class Student{
    public static void main(String[] args){
        //成员变量
        private String name;
        private int age;    //私有成员变量

        public void setName(String name){
            this.name = name;
        }
        
        public String getName(){
            return name;
        }
        
        提供get/set方法
        public void setAge(int age){
            this.age = age;
        }
        
        public int getAge(){
            return age;
        }
        
        public void show(){
            System.out.println(name + "," age);
        }
    }
}

里面的name和age都是用this关键字进行了修饰,他指代的就是成员变量,而等号后面的name没有用this修饰,他就是局部变量。

this不能使用在static方法中。

四、public关键字

public属于公共访问权限。如果一个类中的成员,使用了public访问权限,则该成员可以在所有类中被访问,不管是否在同一包中。

五、protected

属于受保护的访问权限。一个类中的成员使用了protected访问权限,则只能被本包及不同包的子类访问。

六、default

如果一个类中的属性或方法没有任何的访问权限声明,则该属性或方法就是默认的访问权限默认访问权限可以被本包中的其他类访问,但是不能被其他包的类访问。

下面用一段代码演示四种访问权限修饰符的用法:


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

面向对象基础2-关键字 的相关文章

  • 将 allMatch、noneMatch 和 anyMatch 合并到单个流上

    我想要以下逻辑 我知道它不起作用 因为它多次消耗流 但我不知道如何实现它 Stream
  • string.split("(?!^)") 解释

    我正在尝试将字符串的字符拆分为字符串数组 我找到了解决方案here https stackoverflow com questions 5235401 split string into array of character strings
  • Java中如何合并两个数组?

    它不是连接而是合并两个数组 使它们成为名称值对的数组 firstarray a aa aaa secondarray b bb bbb result a b aa bb aaa bbb 最好的方法是什么 in Java public sta
  • 将键与多个值对象关联的有效集合[重复]

    这个问题在这里已经有答案了 有任何有效的集合可以将键与多个值关联起来 例如 new HashMap
  • 从 Eclipse 导出后,WAR 文件中缺少一些必要的库 - 为什么?

    我接手了一个大学的项目 其中包含一些 Web 服务 通过将项目导出为 WAR 文件 一些库包含在文件中 例如 Axis2 而另一些则不包含 hibernate JDBC 驱动程序 另外 添加到类路径中的 jar 尚未导出 所有库都位于硬盘驱
  • 如何访问EmbeddedSolrServer实例的管理界面?

    在我的网络应用程序中 我正在运行org apache solr client solrj embedded EmbeddedSolrServer出于调试目的 我想访问管理界面 这就是我实例化服务器的方式 new EmbeddedSolrSe
  • 如何在android中使用retrofit访问404错误?

    我正在使用改造 2 访问 REST API 以使用原始正文插入 JSON 数据 我从服务器获得成功响应 但在响应时收到 404 错误 我想访问404错误请帮我解决这个问题 ApiUtil getServiceClass sendFinalC
  • 如何对 jar 文件资源使用 File.separator?

    我正在尝试读取位于 jar 文件中的属性文件 我想使用 File separator 因为应用程序将在多个平台上运行 我正在构建路径如下 jarFilePath jar file jarFile getAbsolutePath jarPro
  • 在 Java 中生成 LaTeX 输出 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有用于从 Java 生成 LaTeX 输出的 Java 库 渲染乳胶 JLatex数学 https
  • 检查更新时 Maven 无限期挂起

    我正在使用 Maven 构建一个项目 我是新手 并且它挂起 mvn package INFO Scanning for projects INFO INFO Building Presentation Reports INFO task s
  • 如何在 PuTTY 中保存并运行 Java 文件?

    我是 AWS 亚马逊网络服务 的新手 所以这可能是一个基本问题 我在 AWS 上创建了一个 EC2 实例 我有一台 Windows 计算机 因此我使用 PUTTY 来连接 Linux 实例 连接到我的 EC2 实例后 我使用以下命令编写 J
  • 无法删除临时文件夹(有时)

    当我启动应用程序时 我创建一个临时文件夹 public static File createTempDir String name throws IOException File tempDir File createTempFile na
  • Java:如果数组大小未知,如何初始化?

    我要求用户输入 1 到 100 之间的一些数字并将它们分配到一个数组中 数组大小未初始化 因为它取决于用户输入数字的次数 我应该如何分配数组长度 如果用户输入 5 6 7 8 9 5 个数字 则 int list becomes int l
  • SwingUtilities.invokeLater

    我的问题与SwingUtilities invokeLater 我应该什么时候使用它 每次需要更新 GUI 组件时都必须使用吗 它到底有什么作用 是否有替代方案 因为它听起来不直观并且添加了看似不必要的代码 Do I have to use
  • 如何根据从 jtextfield 和组合框接收的值将数据行添加到 Jtable

    我有一个JFrame表格有JTextFields JCombobox等等 我能够将这些值接收到变量 现在我想将接收到的数据添加到JTable当用户单击 添加 或类似的操作时在新行中 我创造了JTable使用 net beans 的问题是将这
  • 运行 Espresso 测试时在 Android studio 中找不到属性 android:forceQueryable

    我已经使用 android studio 录制了我的 Android 应用程序 Espresso 测试记录浓缩咖啡测试选项中Run菜单 在记录的最后 我用自己的文件名保存了测试 单击保存按钮后 IDE 会自动在以下位置创建文件Android
  • 使用 Retrofit 获取原始 HTTP 响应

    我想从我的 API REST 获取原始 http 响应 我尝试过这个界面 POST login FormUrlEncoded Call
  • Java 9:AES-GCM 性能

    我进行了一个简单的测试来测量AES GCM https en wikipedia org wiki Galois Counter Mode表现在Java 9 通过在循环中加密字节缓冲区 结果有些令人困惑 本机 硬件 加速似乎有效 但并非总是
  • 在 Spark MLlib 上使用 Java 中的 Breeze

    在尝试从Java使用MLlib时 使用微风矩阵运算的正确方法是什么 例如scala 中的乘法很简单 matrix vector 相应的功能在Java中是如何表达的 有一些方法 例如 colon times 可以通过正确的方式调用 breez
  • ImageIO.read(...) - 非常慢,有更好的方法吗?

    我正在加载大量将在我的应用程序中使用的图标 我计划在服务器启动时从 jar 中加载所有这些 然而 由于数百张图像加起来刚刚超过 9MB 执行此任务仍然需要 30 秒多的时间 我现在正在一个单独的线程中执行此操作 但这让我想知道我是否在代码中

随机推荐

  • 对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是: 00000 00001 00010 00011 00100 请按从小到大的顺序输出这32种01串。

    问题描述 对于长度为5位的一个01串 每一位都可能是0或1 一共有32种可能 它们的前几个是 00000 00001 00010 00011 00100 请按从小到大的顺序输出这32种01串 输入格式 本试题没有输入 输出格式 输出32行
  • [极客大挑战 2019]RCE ME 1

    极客大挑战 2019 RCE ME 1 首先打开题目得到 发现是代码审计 传入的code不能大于40 并且不能包含a到z的大小写字符和1到10的数字 我们可以通过不在这个字符集里的字符进行绕过 可以采用异或和取反 这里我采用取反 绕过 执行
  • 如何画好『数据流图』和『业务流程图』

    前言 数据流图 Data Flow Diagram DFD 是一种便于用户理解和分析系统数据流程的图形工具 他摆脱了系统和具体内容 精确的在逻辑上描述系统的功能 输入 输出和数据存储等 是系统逻辑模型的重要组成部分 一 数据流图组成部分 数
  • (深度学习)Pytorch实现MLP并在MNIST数据集上验证

    Pytorch实现MLP并在MNIST数据集上验证 1 综述 2 MNIST数据集 3 代码细节说明 4 详细代码 综述 PyTorch实现MLP并在MNIST数据集上验证 是我所上的模式识别与深度学习课程的第一个实验 主要是给我们练练手熟
  • 进阶自动化测试,你一定要知道的...

    自动化测试指软件测试的自动化 在预设状态下运行应用程序或系统 预设条件包括正常和异常 最后评估运行结果 将人为驱动的测试行为转化为机器执行的过程 自动化测试框架一般可以分为两个层次 上层是管理整个自动化测试的开发 执行以及维护 在比较庞大的
  • 搭建LightPicture开源免费图床系统「公网远程控制」

    文章目录 1 前言 2 Lightpicture网站搭建 2 1 Lightpicture下载和安装 2 2 Lightpicture网页测试 2 3 cpolar的安装和注册 3 本地网页发布 3 1 Cpolar云端设置 3 2 Cpo
  • 2021年漳州三中高考成绩查询,漳州高中学校实力排名,2021年漳州所有的高中分数线排名...

    2018年漳州市重点高中排名 排名学校名称人气所在市类型 1漳州三中1585漳州市省级示范高中 2漳浦道周中学1403漳州市省级示范高中 3诏安县第一中学1377漳州市省级示范高中 4福建省龙海第一中学1267漳州市省级示范高中 5福建省漳
  • Niginx

    基础 流程 分为正向代理和反向代理 在反向代理中 访问地址被nginx所拦截 而后 转发到其他位置 通过server进行处理 其中 server name和listen用来匹配服务器 不针对其后的具体路径 server匹配成功后 通过rew
  • linux ffmpeg开发环境搭建(基于ubuntu14.04和ffmpeg3.2)

    本文将介绍ffmpeg开发环境的安装测试和更新的步骤 基于ubuntu14 04和ffmpeg3 2 1 安装x264 1 libx264需要yasm 所以先安装yasm sudo apt get install yasm 2 安装libx
  • 修改jar包package目录结构操作方法

    开发中会遇到用第三方的jar包 有时候会出现不同的jar包 包名一致的情况 这就会引发运行时异常 找不到相应的jar包 这种问题时常困扰我们很长时间 下面提出一种解决办法 例如gson jar 1 新建一个文件夹 2 将要修改的jar包放到
  • 解读网易财报:游戏营收创新高,在线教育扬眉吐气?

    近期 不少中概股已相继对外发布新一季财报 5月18日 国内互联网巨头网易公布了2021年一季度业绩报告 从一季度的业绩表现而言 网易营收实现了新增长 超出市场及分析师的预期 在净利方面 摆脱了连续两个季度的负增长 亦超出分析师预期 受财报利
  • 读写.ini文件

    读写 ini文件 零 前言 一 写 二 读 总 零 前言 ini文件是程序的配置文件 它用来记录历史信息 界面信息 用户操作等 当然除了ini文件可以保存信息 其它文件也可以保存操作的 json txt csv等 如果数据比较少且读写不频繁
  • 机器学习算法总结--线性回归和逻辑回归

    1 线性回归 简述 在统计学中 线性回归 Linear Regression 是利用称为线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析 这种函数是一个或多个称为回归系数的模型参数的线性组合 自变量都是一次
  • ChatGPT报错“Too many requests in 1 hour.Try again later“

    一 出现 Too many requests in 1 hour Try again later 怎么回事 如果您在使用ChatGPT时出现了 Too many requests in 1 hour Try again later 一小时内
  • 24张架构图把数据治理核心内容讲透了

    前言 随着信息革命和信息化的飞速发展 计算机数据量的急剧增长 数据利用和管理的重要性与日俱增 数据逐渐在信息化这个大舞台上扮演着越来越重要的角色 数据治理是企业大数据基础 企业级数据平台助力企业数字化转型 在目前数字化转型大趋势的推动下 企
  • 【机试题(实现语言:python3)】字符串运用-密码截取(最长回文子串)

    题目描述 给定一个仅包含小写字母的字符串 求它的最长回文子串的长度 所谓回文串 指左右对称的字符串 所谓子串 指一个字符串删掉其部分前缀和后缀 也可以不删 的字符串 注意 记得加上while处理多个测试用例 输入描述 输入一个仅包含小写字母
  • Qt编程 (一)

    一 Qt简介 1 Qt是什么 图形用户程序框架 是对底层应用编程接口API面向对象的封装 是一套基于C 语言的类库 专注但不局限于图形用户界面的开发 也可以进行系统调用 网络编程 数据库 2D 3D图形处理 特点 跨平台 支持Linux W
  • hosts文件被删除了如何解决

    一 给etc目录授权 进入c windows system32 drivers etc 选中etc目录 右键 属性 高级 二 恢复hosts文件 进入目录C Windows System32 drivers etc 新建hosts txt
  • python三次样条插值拟合的树行线_R语言:样条回归

    01 解决何种问题 线性回归都知道是用来描述两个变量之间的线性关系 比如身高和体重 自变量身高每增加1个单位 因变量体重就变化多少 但是现实中能用线性回归描述的情况太少了 绝大部分关系都是非线性关系 这个时候就必须用其他回归来拟合了 例如类
  • 面向对象基础2-关键字

    目录 前言 一 private关键字 二 private关键字的使用 三 this关键字 四 public关键字 五 protected 六 default 总结 前言 一 private关键字 private属于私有访问权限 用于修饰类的