每天学一点Scala之内部类

简介:

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  masterKafka 2  =  master.create( "masterKafka2" )
 
       println( "---->\t"  + masterKafka.getClass  ==  masterKafka 2 .getClass) //false
 
       val  slave  =  new  Kafka
       val  slaveKafka  =  slave.create( "slaveKafka" )
       val  slaveKafka 2  =  slave.create( "slaveKafka2" )
 
       master.saveKakfa + =  masterKafka
       master.saveKakfa + =  masterKafka 2
 
       master.saveKakfa.foreach(x  = > print(x.name +  " " ))
 
//    master.saveKakfa += slaveKafka
 
    }
}

















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


相关文章
|
Java Scala
165 Scala 继承
165 Scala 继承
43 0
|
11天前
|
Java Scala
Scala 访问修饰符
Scala 访问修饰符
23 7
|
6天前
|
Java Scala
Scala 类和对象
Scala 类和对象
21 5
|
Scala
163 Scala 类
163 Scala 类
37 0
|
大数据 Scala 容器
【建议收藏】|3分钟让你学会Scala Trait 使用
Scala 是一种强大的静态类型编程语言,其中的 Trait 是一种重要的特性。Trait 可以被看作是一种包含方法和字段定义的模板,可以被其他类或 Trait 继承或混入。在本文中,我们将介绍 Scala Trait 的边界(Boundary)的概念,并展示如何使用它来限制 Trait 的使用范围。
261 11
|
设计模式 Ubuntu Java
|
Java Scala
scala中的泛型
scala和Java一样,类和特质、方法都可以支持泛型。我们在学习集合的时候,一般都会涉及到泛型。
96 0
|
Java Scala
Scala学习笔记(四) 类的初步
Scala学习笔记(四) 类的初步
127 0
|
大数据 Scala
scala实现单例模式
单例模式介绍 单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。 对于系统中的某些类来说,只有一个实例很重要,例如,一个系统中可以存在多个打印任务,但是只能有一个正在工作的任务;一个系统只能有一个窗口管理器或文件系统
13110 0