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

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

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

相关文章
|
7月前
|
存储 编译器 程序员
【C++】类与对象(一)类的定义 访问限定符 类的实例化 this指针
【C++】类与对象(一)类的定义 访问限定符 类的实例化 this指针
|
17天前
|
C++
友元是一种允许某些外部函数或类访问另一个类的成员的机制
友元是C++中的一个强大特性,它提供了一种机制来允许特定的外部函数或类访问私有和保护成员。正确使用友元可以增强程序的功能性和灵活性,但应谨慎使用以避免破坏封装性和增加代码的复杂度。在设计类和功能时,合理利用友元,可以使得C++程序更加有效和高效。
14 2
|
22天前
|
Java 编译器 数据处理
JavaSE——面相对象高级一(4/4)-继承相关的注意事项:权限修饰符、单继承、Object类、方法重写、子类访问成员的特点......
JavaSE——面相对象高级一(4/4)-继承相关的注意事项:权限修饰符、单继承、Object类、方法重写、子类访问成员的特点......
29 0
|
1月前
|
存储 编译器 程序员
【C++】类和对象①(什么是面向对象 | 类的定义 | 类的访问限定符及封装 | 类的作用域和实例化 | 类对象的存储方式 | this指针)
【C++】类和对象①(什么是面向对象 | 类的定义 | 类的访问限定符及封装 | 类的作用域和实例化 | 类对象的存储方式 | this指针)
|
1月前
|
存储 编译器 C语言
【C++练级之路】【Lv.2】类和对象(上)(类的定义,访问限定符,类的作用域,类的实例化,类的对象大小,this指针)
【C++练级之路】【Lv.2】类和对象(上)(类的定义,访问限定符,类的作用域,类的实例化,类的对象大小,this指针)
|
1月前
|
存储 C语言 C++
【c++】类和对象 - 类的访问限定符及封装/作用域和实例化
【c++】类和对象 - 类的访问限定符及封装/作用域和实例化
【c++】类和对象 - 类的访问限定符及封装/作用域和实例化
|
7月前
|
存储 Java
Java内部类 - 局部/匿名/成员/静态内部类
Java内部类 - 局部/匿名/成员/静态内部类
69 0
|
9月前
类的内部成员之五:内部类
类的内部成员之五:内部类
20 1
|
9月前
|
存储 安全 编译器
【C++基础】类与对象(上):访问限定符、类作用域、类实例化、类对象模型、this指针
【C++基础】类与对象(上):访问限定符、类作用域、类实例化、类对象模型、this指针
88 0
IP地址分类(A类 B类 C类 D类 E类)
IP地址分类(A类 B类 C类 D类 E类)
154 0
IP地址分类(A类 B类 C类 D类 E类)