15_Scala面向对象编程_访问权限

news2024/9/27 9:26:58

文章目录

  • Scala访问权限
  • 1.同类中访问
  • 2.同包不同类访问
  • 3.不同包访问
  • 4.子类权限
  • 小结

Scala访问权限

知识点概念
private
--同类访问

private[包名]
--包私有; 同类同包下访问

protected
--同类,或子类      //同包不能访问

(default)(public)默认public
--公共访问

1.同类中访问

  class User{

//    TODO 1.同类中访问,所有权限都可以访问
    private var private_name  ="zhangsan"
    private[_14Scala访问权限] var private__age  ="zhangsan"       //"_14Scala访问权限"包,以及其子包下的类和对象才能访问此属性
    protected var protected_sex  ="zhangsan"
    var public_email  ="zhangsan"        //default

    def test(): Unit = {
      println(this.private__age)
      println(this.private_name)
      println(this.protected_sex)
      println(this.public_email)
    }
}

小结:同类任何属性都可this访问

2.同包不同类访问

创建EMP类在User类隔壁,创建User实例,进行访问其属性;

在这里插入图片描述

  class EMP{
//    TODO 2.同包下,不同类访问;      EMP类中访问User类属性
    val user = new User;
    def test(): Unit = {
      println(user.public_email)
      println(user.private__age)
    }
 }

小结:同包下仅有public,private[指定当前包]等可以访问属性值

3.不同包访问

3.1在14_Scala访问权限隔壁创建包_14DemoTest

在这里插入图片描述

3.2创建Access对象

3.3写入下面代码,精确导入包User

测试使用不同包下属性;

package _14DemoTest

import _14Scala访问权限.Object_Access._   //导入全部包信息
//import _14Scala访问权限._               //此处导入不能使用User

object Access {
  def main(args: Array[String]): Unit = {

//    TODO 3.不同包下访问权限
    var User = new User
    println(User.public_email)      //也就只能访问public类型
  }
}

4.子类权限

同包下

//  TODO 4.关于子类权限
  class Student extends User{
    val user =new User
    def test1(): Unit = {
      println(user.protected_sex)
    }
  }

不同包下

在这里插入图片描述

测试不同包下子类 权限使用情况

class Demo extends User {
  val user = new User
  def main(args: Array[String]): Unit = {

    println(user.protected_sex)
    println(user.public_email)

  }
}

小结

private
--同类访问

private[包名]
--包私有; 同类同包下访问

protected
--同类,或子类      //同包不能访问

(default)(public)默认public
--公共访问

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

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

相关文章

Ubuntu MATE系统下WPS显示错位

系统:Ubuntu MATE 22.04和24.04,在显示器设置200%放大的情况下,显示错位。 显示器配置: WPS显示错位: 这个问题当前没有找到好的解决方式。 因为4K显示屏设置4K分辨率,图标,字体太小&#xff…

二、ArkTS语法学习

上一篇我们学习了Harmony​​​​​​开发入门,接下来我们简单学习一下ArkTS 一、ArkTS起源 在TS基础上扩展了申明式UI和状态管理等相应的能力 二、TS语法基础 1、类型 any 任意类型(动态类型) let a: any 5; a "str" num…

【笔记】常用USB转串口芯片CH340驱动自动静默安装方法

微信关注公众号 “DLGG创客DIY” 设为“星标”,重磅干货,第一时间送达。 前言 CH340是沁恒(南京沁恒微电子股份有限公司)一款非常有名USB转串口芯片,很多廉价的开发板上都使用这款USB转串口芯片,我觉得主要原因是因为它成本最低&a…

[论文阅读]Adversarial Autoencoders(aae)和代码

In this paper, we propose the “adversarial autoencoder” (AAE), which is a probabilistic autoencoder that uses the recently proposed generative adversarial networks (GAN) to perform variational inference by matching the aggregated posterior of the hidden …

基于K8S构建Jenkins持续集成平台

文章目录 安装和配置NFSNFS简介NFS安装 在Kubernetes安装Jenkins-Master创建NFS client provisioner安装Jenkins-Master Jenkins与Kubernetes整合实现Jenkins与Kubernetes整合构建Jenkins-Slave自定义镜像 JenkinsKubernetesDocker完成微服务持续集成拉取代码,构建镜…

LLM2Vec介绍和将Llama 3转换为嵌入模型代码示例

嵌入模型是大型语言模型检索增强生成(RAG)的关键组成部分。它们对知识库和用户编写的查询进行编码。 使用与LLM相同领域的训练或微调的嵌入模型可以显著改进RAG系统。然而,寻找或训练这样的嵌入模型往往是一项困难的任务,因为领域内的数据通常是稀缺的。…

Docker目录迁移

我们在生产环境中安装Docker时,默认的安装目录是 /var/lib/docker,而通常情况下,规划给系统盘的目录一般为50G,该目录是比较小的,一旦容器过多或容器日志过多,就可能出现Docker无法运行的情况,所…

QT+串口调试助手+扩展版

前言:此文章是这篇文章的拓展 QT串口调试助手基本版-CSDN博客,如果需要独立完成串口调试助手直接看基本版文章即可,如果需要完成串口调试助手的其他功能,参考拓展版。 一、更新QT串口调试助手UI界面 1、ui串口设置界面 2、ui串口…

树莓派4-使用systemctl设置开机自启oled播放服务ip地址与logo

一、目标: 开机自启oled显示服务ip与端口,并播放logo 二、过程: 1、出现luma库不存在问题,修改.service文件,增加用户与用户组。在本地测试过程中可以使用python script.py执行python脚本,所以将.servic…

机器学习周记(第三十七周:语义分割)2024.4.29~2024.5.5

目录 摘要 ABSTRACT 1 DeepLabV3 1.1 空间金字塔池化(ASPP) 1.2 解码器(Decoder) 1.3 Xception 2 相关代码 摘要 DeepLabV3 是由Google Brain团队开发的深度学习模型,专注于语义分割任务。它采用深度卷积神经网…

【c++算法篇】双指针(上)

🔥个人主页:Quitecoder 🔥专栏:算法笔记仓 朋友们大家好啊,本篇文章我们来到算法的双指针部分 目录 1.移动零2.复写零3.快乐数4.盛水最多的容器 1.移动零 题目链接:283.移动零 题目描述: 算法…

深究muduo网络库的Buffer类!!!

最近在学习了muduo库的Buffer类,因为这个编程思想,今后在各个需要缓冲区的项目编程中都可以用到,所以今天来总结一下! Buffer的数据结构 muduo的Buffer的定义如下,其内部是 一个 std::vector,且还存在两个…

9.3.k8s的控制器资源(deployment部署控制器)

目录 一、deployment部署控制器概念 二、deployment资源的清单编写 三、小结 功能 使用场景 原理 四、deployment实现升级和回滚 1.编辑deployment资源清单(v1版本) 2.创建service资源用于访问 ​编辑 3.修改deploy清单中pod镜像版本为V2 4…

Vmware虚拟机瘦身及Samba服务不可用问题解决

虚拟机磁盘空间膨胀是一个令人头疼的问题,特别是对许多搞开发的小伙伴。无论是做后台服务、嵌入式还是Android开发,都面临着这个难题。首先,操作系统本身就已占用不少空间,更新安装包,再下载一些开源软件,剩…

【管理篇】确定自己的管理风格

目录标题 常见的四类领导力风格不同领导力风格适应的场景领导力风格总结 常见的四类领导力风格 四类领导力风格,简单概况如下: 指令式管理:重事不重人,关注目标和结果,喜欢发号施令但不亲力亲为。支持式管理&#xf…

Windows编译SeetaFace6

1. 概述 SeetaFace6包含人脸识别的基本能力:人脸检测、关键点定位、人脸识别,同时增加了活体检测、质量评估、年龄性别估计,并且顺应实际应用需求,开放口罩检测以及口罩佩戴场景下的人脸识别模型。 发布时间 人脸识别算法版本 G…

易语言IDE界面美化支持库

易语言IDE界面美化支持库 下载下来可以看到,是一个压缩包。 那么,怎么安装到易语言中呢? 解压之后,得到这两个文件。 直接将clr和lib丢到易语言安装目录中,这样子就安装完成了。 打开易语言,在支持库配置…

swift微调多模态大语言模型

微调训练数据集指定方式的问题请教 Issue #813 modelscope/swift GitHubQwen1.5微调训练脚本中,我用到了--dataset new_data.jsonl 这个选项, 可以训练成功,但我看文档有提到--custom_train_dataset_path这个选项,这两个有什么…

C 认识指针

目录 一、取地址操作符(&) 二、解引用操作符(*) 三、指针变量 1、 指针变量的大小 2、 指针变量类型的意义 2.1 指针的解引用 2.2 指针 - 整数 2.3 调试解决疑惑 认识指针,指针比较害羞内敛,我们…

局域网唤醒平台:UpSnap

简介:UpSnap是一个简单的唤醒局域网网络应用程序。UpSnap为每个用户、每个设备提供了唯一的访问权限。虽然管理员拥有所有权限,但他们可以为用户分配特定的权限,如显示/隐藏设备、访问设备编辑、删除和打开/关闭设备电源。 历史攻略&#xf…