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

文章目录

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
--公共访问
相关推荐
IT_陈寒34 分钟前
SpringBoot这个分页坑,我踩了三天才爬出来
前端·人工智能·后端
颜酱37 分钟前
05 | 召回前置准备:根据业务数据库生成各数据库(读取配置阶段)
前端·人工智能·后端
Wang's Blog43 分钟前
Go-Zero项目开发24: 基于Bitmap实现群聊消息已读未读
开发语言·后端·golang
Conan在掘金1 小时前
鸿蒙报错速查:struct 里嵌 namespace 声明就炸,根因 + 真解法
后端
东方小月2 小时前
从零开发一个 Coding Agent(三):EventStream 事件流通道设计与实现
前端·人工智能·后端
卫子miao2 小时前
如何评价当前大语言模型的记忆机制?
后端·架构
神奇小汤圆2 小时前
为什么 AQS 成为 Java 并发的基石?
后端
星栈3 小时前
MCP 从 stdio 迁到 SSE,踩了 5 个传输层坑
人工智能·后端·架构
Conan在掘金3 小时前
鸿蒙报错速查:struct 里嵌 enum 声明就炸,根因 + 真解法
后端
吃好睡好便好3 小时前
MATLAB中图像的读取、写入和显示
开发语言·图像处理·学习·计算机视觉·matlab