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

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

开发者学堂课程【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()

相关文章
|
2月前
|
安全 编译器 C++
【C++篇】C++类与对象深度解析(三):类的默认成员函数详解
【C++篇】C++类与对象深度解析(三):类的默认成员函数详解
24 3
|
2月前
|
安全 编译器 C++
【C++篇】C++类与对象深度解析(二):类的默认成员函数详解
【C++篇】C++类与对象深度解析(二):类的默认成员函数详解
26 2
|
6月前
|
C++
友元是一种允许某些外部函数或类访问另一个类的成员的机制
友元是C++中的一个强大特性,它提供了一种机制来允许特定的外部函数或类访问私有和保护成员。正确使用友元可以增强程序的功能性和灵活性,但应谨慎使用以避免破坏封装性和增加代码的复杂度。在设计类和功能时,合理利用友元,可以使得C++程序更加有效和高效。
53 2
|
7月前
|
Java
【Java开发指南 | 第九篇】访问实例变量和方法、继承、接口
【Java开发指南 | 第九篇】访问实例变量和方法、继承、接口
53 4
|
6月前
|
Java 编译器 数据处理
JavaSE——面相对象高级一(4/4)-继承相关的注意事项:权限修饰符、单继承、Object类、方法重写、子类访问成员的特点......
JavaSE——面相对象高级一(4/4)-继承相关的注意事项:权限修饰符、单继承、Object类、方法重写、子类访问成员的特点......
63 0
|
7月前
|
存储 编译器 程序员
【C++】类和对象①(什么是面向对象 | 类的定义 | 类的访问限定符及封装 | 类的作用域和实例化 | 类对象的存储方式 | this指针)
【C++】类和对象①(什么是面向对象 | 类的定义 | 类的访问限定符及封装 | 类的作用域和实例化 | 类对象的存储方式 | this指针)
|
7月前
|
存储 C语言 C++
【c++】类和对象 - 类的访问限定符及封装/作用域和实例化
【c++】类和对象 - 类的访问限定符及封装/作用域和实例化
【c++】类和对象 - 类的访问限定符及封装/作用域和实例化
|
7月前
|
存储 编译器 C语言
【C++练级之路】【Lv.2】类和对象(上)(类的定义,访问限定符,类的作用域,类的实例化,类的对象大小,this指针)
【C++练级之路】【Lv.2】类和对象(上)(类的定义,访问限定符,类的作用域,类的实例化,类的对象大小,this指针)
|
7月前
|
Python
请描述Python中类的私有属性和公有属性的不同,并给出使用私有属性的好处。
请描述Python中类的私有属性和公有属性的不同,并给出使用私有属性的好处。
183 1
|
7月前
|
C++
[C++] 多个模块实时公用一个类中的成员变量
[C++] 多个模块实时公用一个类中的成员变量
132 1