开发者学堂课程【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
v
a
r
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
v
a
r
sal
=800
.9
}
}
object ScalaOuterClass{ //伴生对象
class ScalaStaticInnerClass {//静态内部类
inner1.info()