每天学一点Scala之内部类

本文深入探讨Scala中内部类的使用特点,包括内部类如何访问外部类的私有成员,以及在数组中存储内部类对象时应注意的问题。通过具体示例说明了内部类对象之间的类类型区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、  scala 里同样可以定义内部类

2、  每个外部类的对象的内部类,都是不同的类,因此,存数组时,要注意

3、  内部类可以访问外部类的私有属性,反之不行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package com.xej.learning.class_learning
 
/**
  * Created by erjun on 2017/8/28.
  * 内部类测试
  */
private[class_learning] class Kafka{
   //定义一个内部类
   class InnerKafka(val name: String){
      var config = "properties.txt"
      def sayHello(): Unit ={
         //内部类,可以调用外部类里private的属性
         //但是,外部类,缺不能访问内部类里的属性
         println("---->:\t" + age)
      }
   }
   private var age = 10
    
   import scala.collection.mutable.ArrayBuffer
   //这个数组,只能添加,同一个对象里多个内部类对象
   //不能添加,不同对象的多个内部类对象
   val saveKakfa = new ArrayBuffer[InnerKafka]()
    
   def create(name: String): InnerKafka ={
      new InnerKafka(name)
   }
}
 
object InnerClass {
   def main(args: Array[String]): Unit = {
      val master = new Kafka
      //同一个对象,创建多个内部类对象
      //可以放到同一数组里
      val masterKafka = master.create("masterKafka")
      val masterKafka2 = master.create("masterKafka2")
 
      println("---->\t" + masterKafka.getClass == masterKafka2.getClass)//false
 
      val slave = new Kafka
      val slaveKafka = slave.create("slaveKafka")
      val slaveKafka2 = slave.create("slaveKafka2")
 
      master.saveKakfa += masterKafka
      master.saveKakfa += masterKafka2
 
      master.saveKakfa.foreach(x => print(x.name + " "))
 
//    master.saveKakfa += slaveKafka
 
   }
}

















本文转自故新51CTO博客,原文链接:http://blog.51cto.com/xingej/1960131 ,如需转载请自行联系原作者


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值