zoukankan      html  css  js  c++  java
  • scala之伴生对象说明

    在scala中伴生类和伴生对象一般是同时存在的,特点:一个为class,一个为object, 其名称是相同的。 在伴生类使用静态方法,伴生对象中定义动态方法。

    1、 定义伴生类

    package cn.qianfeng
    
    object demo5_object {
        def main(args: Array[String]): Unit = {
    
        }
    
    }
    
    class Tearch(name:String, age:Int, course:String){ // 伴生类
        private val ta = "liming"  //私有成员
        def show(): Unit ={  
            println(s"姓名 = ${name}, 年龄 = ${age}, 课程 = ${course}")
        }
    }
    
    object Tearch{  // 伴生对象
    
    }

    2、编写伴生对象

         在伴生对象中, 使用apply方法将伴生对象进行重写

    package cn.qianfeng
    
    object demo5_object {
        def main(args: Array[String]): Unit = {
    
        }
    
    }
    
    class Tearch(name:String, age:Int, course:String){ // 伴生类
        private val ta = "liming"
        def show(): Unit ={
            println(s"姓名 = ${name}, 年龄 = ${age}, 课程 = ${course}")
        }
    }
    
    object Tearch{ // 伴生对象
        def apply(name:String, age:Int): Tearch ={ // 对伴生类的重写,返回Tearch类对象
            val tea = new Tearch(name, age, null)
            println(tea.ta) // 可访问伴生类中的成员
            tea
        }
    
        def ttt: Unit ={  // 静态方法
            println("三人行")
        }
    }

     3、调用代码

    package cn.qianfeng
    
    object demo5_object {
        def main(args: Array[String]): Unit = {
            val  te = Tearch("kongzhagen", 35)  // 初始化伴生对象
            te.show       // 调用伴生类中的方法
            Tearch.ttt    // 调用伴生对象中的静态方法
        }
    }
    
    class Tearch(name:String, age:Int, course:String){ // 伴生类
        private val ta = "liming"
        def show(): Unit ={
            println(s"姓名 = ${name}, 年龄 = ${age}, 课程 = ${course}")
        }
    }
    
    object Tearch{ // 伴生对象
        def apply(name:String, age:Int): Tearch ={ // 对伴生类的重构
            val tea = new Tearch(name, age, null)
            println(tea.ta)
            tea
    
        }
    
        def ttt: Unit ={
            println("三人行")
        }
    }
  • 相关阅读:
    Keep it simple & stupid
    BZOJ 2631: tree( LCT )
    BZOJ 2843: 极地旅行社( LCT )
    BZOJ 2002: [Hnoi2010]Bounce 弹飞绵羊( LCT )
    BZOJ 1742: [Usaco2005 nov]Grazing on the Run 边跑边吃草( dp )
    BZOJ 3531: [Sdoi2014]旅行( 树链剖分 )
    BZOJ 1269: [AHOI2006]文本编辑器editor( splay )
    BZOJ 2016: [Usaco2010]Chocolate Eating( 二分答案 )
    BZOJ 1734: [Usaco2005 feb]Aggressive cows 愤怒的牛( 二分答案 )
    BZOJ 2101: [Usaco2010 Dec]Treasure Chest 藏宝箱( dp )
  • 原文地址:https://www.cnblogs.com/kongzhagen/p/15127798.html
Copyright © 2011-2022 走看看