zoukankan      html  css  js  c++  java
  • Scala单例对象和伴生对象

    1、Scala单例对象 
    Scala单例对象是十分重要的,没有像在Java一样,有静态类、静态成员、静态方法,但是Scala提供了object对象,这个object对象类似于Java的静态类,它的成员、它的方法都默认是静态的。

    如果object的静态成员要被外界访问,则该成员不能被private修饰

    2、Scala伴生对象 
    如果有同样一个类与该object名字一样,则称该object为该类的伴生对象,相对应,该类为object的伴生类。

    如果一个类有它的伴生对象,这个类就可通过object的名字访问到所有成员,但object不在该类的作用范围。

     

    经典伴生对象和伴生类实现demo

    /**
      * Created by root
      * Description : 伴生对象和伴生类
      *
      * 伴生类ObjectAndClassTest的构造函数定义为private,虽然这不是必须的,却可以有效防止外部实例化ObjectAndClassTest类,使得ObjectAndClassTest类只能供对应伴生对象使用;
      * 每个类都可以有伴生对象,伴生类与伴生对象写在同一个文件中;
      * 在伴生类中,可以访问伴生对象的private字段ObjectAndClassTest.specialty
      * 而在伴生对象中,也可以访问伴生类的private方法:objectAndClassTest.getSpecialtyName()
      * 最后,在外部不用实例化,直接通过伴生对象访问方法:ObjectAndClassTest.printSpectalty()
      *
      */
    class  ObjectAndClassTest private(val name:String) {
    
      private def getSpecialtyName() = "name = " + name + ";specialty = " + ObjectAndClassTest.specialty
    }
    
    object ObjectAndClassTest{
        private val specialty = "software development"
        private val objectAndClassTest = new ObjectAndClassTest("xiaoming")
        def printSpectalty() = println(objectAndClassTest.getSpecialtyName())
    
    }
    
    
    object Test{
      def main(args: Array[String]): Unit = {
        ObjectAndClassTest.printSpectalty()
      }
    }
  • 相关阅读:
    图像处理笔记(十)
    图像处理笔记(九):频率域滤波
    图像处理笔记(八)
    图像处理笔记(七)
    图像处理笔记(六):灰度变换与空间滤波
    分布式
    关于python代码是编译执行还是解释执行
    python中的元类metaclass
    Python的函数参数传递
    递推思想
  • 原文地址:https://www.cnblogs.com/xubiao/p/7998522.html
Copyright © 2011-2022 走看看