内部类访问外部类属性案例|学习笔记

简介: 快速学习内部类访问外部类属性案例。

开发者学堂课程【Scala 核心编程-基础:内部类访问外部类属性案例】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/609/detail/9004


内部类访问外部类属性案例

 

内容介绍

Scala 嵌套类的使用2

整理

 

一、Scala 嵌套类的使用2

请编写程序,在内部类中访问外部类的属性。

1、方式1

内部类如果想要访问外部类的属性,可以通过外部类对象访问。即:访问方式:外部类名.this.属性名

//测试下使用 inner1 去调用 info()

inner1. info()

//创建静态内部类实例

val staticInner= new Scal aOuterClass. ScalaStaticInnerClass( )

}

}

//外部类

//内部类访问外部类的属性的方法1   外部类名. this.属性

class ScalaouterClass {

//定义两个属性

Var name=‘’scoot‘’

Private var sal=30000.9

class ScalaInnerClass { //成员内部类,可以访问私有类

def info() = {

//访问方式: 外部类名. this.属性名

//怎么理解 Scalaouterclass.this 就相当于是 ScalaouterClass 这个外部类的一个实例,

//然后通过 ScalaouterClass.this 实例对象去访问 name 属性

//如果在 java 中内部类去访问外部只是这种写法比较特别,学习 java 的同学可能更容易理解Scalaouterclass.class 的写法

println("name =”+ ScalaouterClass. this. name+”age =”+ ScalaouterClass. this.sal) 因为没有写 name 和 sal所以报错

}

}

进行运行运行结果是 name = scoot sal =30000. 9运行成功说明内部类去访问外面私有的东西没有任何问题

2、方式2

内部类如果想要访问外部类的属性,也可以通过外部类别名访问(推荐)。即访问方式外部类名别名属性名。[外部类名.this 等价外部类名别名]

前提是把属性的定义扔在别名的后面

//外部类

//内部类访问外部类的属性的方法2 使用别名的方式

//1. 将外部类属性,写在别名后面

class ScalaOuterClass {

myOuter=> //这里我们可以这里理解外部类的别名看做是外部类的一个实例

class ScalainnerClass { //成员内部类

def info()={

//访问方式外部类别名属性名

//只是这种写法比较特别,学习 java 的同学可能更容易理解 ScalaouterClass.class 的写法

printIn("name= " + myOuter.name+"sal =" + myOuter.sal)

}

}

//定义两个属性

var name= "jack "

Private var sal =800.9

}

}

object ScalaOuterClass{ //伴生对象

class ScalaStaticInnerClass {//静态内部类

inner1.info()

运行结果如下
name~=jack sal~ =800.9

这就是第二种使用方式

 

二、整理

嵌套类

1、Scala 嵌套类的使用1

请编写程序,定义 Scala 的成员内部类和静态内部类,并创建相应的对象实例

代码如下

class ScalaOuterClass {

class ScalalnnerClass { //成员内部类

}

}

object ScalaOuterClass{//伴生对象

class ScalaStaticInnerClass { //静态内部类

}

}

创建两个外部实例

val outer1 : ScalaOuterClass = new ScalaOuterClass();

val outer2 : ScalaOuterClass = new ScalaOuterClass();

// Scala 创建内部类的方式和 Java 不一样,将 new 关键字放

置在前,使用对象.内部类的方式创建

val inner1 = new outer1 ScalalnnerClass() 

val inner2 = new outer2. ScalalnnerClass()

//创建静态内部类对象

val staticInner = new

ScalaOuterClass. ScalaStaticInnerClass()

println(staticInner)

2、Scala 嵌套类的使用1

请编写程序,在内部类中访问外部类的属性。

(1)方式1

内部类如果想要访问外部类的属性,可以通过外部类对象访问。即:访问方式:外部类名.this.属性名

代码如下

//外部类

//内部类访问外部类的属性的方法1   外部类名. this.属性

class ScalaouterClass {

//定义两个属性

Var name=‘’scoot‘’

Private var sal=30000.9

class ScalaInnerClass { //成员内部类

def info() = {

//访问方式: 外部类名. this.属性名

//怎么理解 Scalaouterclass.this 就相当于是 ScalaouterClass 这个外部类的一个实例,

//然后通过 ScalaouterClass.this 实例对象去访问 name 属性

//只是这种写法比较特别,学习 java 的同学可能更容易理解 Scalaouterclass.class 的写法

println("name =”+ ScalaouterClass. this. name+”age =”+ ScalaouterClass. this.sal) 

}

}

(2)方式2

内部类如果想要访问外部类的属性,也可以通过外部类别名访问(推荐)。即访问方式外部类名别名属性名

代码如下

//外部类

//内部类访问外部类的属性的方法2 使用别名的方式

//1. 将外部类属性,写在别名后面

class ScalaOuterClass {

myOuter=> //这里我们可以这里理解外部类的别名看做是外部类的一个实例

class ScalainnerClass { //成员内部类

def info()={

//访问方式外部类别名属性名

//只是这种写法比较特别,学习 java 的同学可能更容易理解 ScalaouterClass.class 的写法

printIn("name= " + myOuter.name+"sal =" + myOuter.sal)

}

}

//定义两个属性

var name= "jack "

Private var sal =800.9

}

}

object ScalaOuterClass{ //伴生对象

class ScalaStaticInnerClass {//静态内部类

inner1.info()

相关文章
|
机器学习/深度学习 存储 算法
基于Flask+Bootstrap+机器学习的世界杯比赛预测系统
基于Flask+Bootstrap+机器学习的世界杯比赛预测系统
306 0
|
JavaScript 定位技术 API
uniapp腾讯地图路线规划
uniapp腾讯地图路线规划
992 0
|
计算机视觉
OpenCV-计算轮廓周长cv::arcLength
OpenCV-计算轮廓周长cv::arcLength
374 0
|
图形学 Android开发 容器
解锁爬坑新技能:FairyGUI在Unity中遇见的问题
众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣!!!
1270 0
|
搜索推荐 网络架构 开发者
Next.js静态出口生成策略深度解析
【7月更文挑战第18天】Next.js凭借其强大的静态生成、静态出口生成以及服务器端渲染功能,为开发者提供了构建高性能、高SEO友好Web应用的强大工具。
|
机器学习/深度学习 PyTorch 算法框架/工具
降龙十八掌:这套优化transformer内存占用的组合技值得收藏(1)
降龙十八掌:这套优化transformer内存占用的组合技值得收藏
544 0
|
消息中间件 负载均衡 Apache
【RocketMQ系列七】消费者和生产者的实现细节
【RocketMQ系列七】消费者和生产者的实现细节
510 1
|
Java API
java调用个人微信API接口收发朋友圈,删除评论朋友圈
java调用个人微信API接口收发朋友圈,删除评论朋友圈
|
机器学习/深度学习 数据采集 人工智能
使用Python和Scikit-learn实现机器学习分类任务
使用Python和Scikit-learn实现机器学习分类任务
484 1
|
Web App开发 缓存 自然语言处理
60 个神级 VS Code 插件!(2)
60 个神级 VS Code 插件!(2)
620 0
60 个神级 VS Code 插件!(2)