首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

scala的伴生类和伴生对象

伴生类和伴生对象 设计初衷 由于static定义的类和对象破坏了 面向对象编程的规范完整性,因此scala 设计之初就没有static关键字概念,类相关的静态属性都放在伴生对象object。...其object x称作class x的伴生对象。 其中伴生类和伴生对象需要同名。 Scala里,类和伴生对象之间没有界限——它们可以互相访问彼此的private字段和private方法。...创建语法 伴生对象的属性可以直接使用类名进行调用;伴生类的属性,需要先实例化对象,才能够进行调用。 没有class,只有object则是单例模式类。...scala伴生类&伴生对象的语法如下: class AssociatedDemo { val a:Int = 10; var b:Int = 2; } object AssociatedDemo...目的是为了适应函数式编程的编码规范,可以伴生对象的apply()new一个对象,使用案例如下: object AssociatedDemo{ def apply():AssociatedDemo

75400
您找到你想要的搜索结果了吗?
是的
没有找到

Scala入门与进阶(四)- Scala面向对象

Scala面向对象 1.面向对象概述 封装:属性方法封装到类 继承:父类和子类直接的关系 多态:***** 父类引用指向子类对象 精髓所在,开发框架的基石 2.类的定义和使用 package com.gwf.scala.course04...val i:Int = _ ^ scala> var i:Int = _ i: Int = 0 scala> var s:String = _ s: String = null scala> 3...附属构造器的第一行必须调用主构造器或者其他构造器 this.gender = gender } println("Person Constructor leave...") } 4.继承 // 子类继承父类,父类的属性子类构造函数可以不加...("~~~~~~~~~~~~~") val c = new ApplyTest() println(c) c() // ==>Class. // 类名() ===> Object.apply // 对象...var count = 0 def incr = { count = count + 1 } // 最佳实践:0bject的apply方法中去new Class def apply()= { println

45720

Scala学习二-面向对象

Scala创建类和对象 object OopDemo{ //创建类 class Monkey(){} //创建main方法 def main(args: Array[String]): Unit...javamain方法是静态的,而在scala没有静态方法,所以scala,main方法必须放在一个单例对象。...,写在object的构造方法体内 object 单例对象名 extends App{ //方法体 } kafka,我们可以看到程序的主入口是kafka.scala //主入口 def main...一个class和obect具有相同的名字,这个object称为伴生对象,这个class称为伴生类 注意: 伴生对象必须要和伴生类一样的名字 伴生对象和伴生类同一个scala源文件 伴生对象和伴生类可以相互访问...Scala,单例对象也可以继承类的 object OopDemo{ //创建monkey类 class Monkey{ var name =" " def

85721

clickhouse更新和删除

ck 目前支持了更新和删除,但是与传统sql语法 略有不同,我也记录下来,防止后面忘记。...332 │ └─────────┘ :) select count(*) from test_update; ┌──count()─┐ │ 17925050 │ └──────────┘ 具体删除...─────┴────────┴─────────┴───────────────┴─────────────────────┘ 数据展示每个分区被更新的操作的时间,而且它的更新速度非常快 如果有数组列我们表如何处理...─────┘ 注意事项: Clickhouse更新操作有一些限制: 索引列不能进行更新 分布式表不能进行更新 ALTER TABLE UPDATE/DELETE不支持分布式DDL,因此需要在分布式环境手动每个节点上...local的进行更新/删除数据。

2.7K10

Scala入门之面向对象

* Scala的Object是一个单例对象,没办法new * object定义的成员变量和方法都是静态的 */ object ScalaStatic { val name: String...* Scala定义类用class关键字修饰 * 这个类默认有一个空参构造器 * 定义类名称后面的构造器叫主构造器 * 类的主构造器的属性会定义成类的成员变量 * 如果主构造器的成员属性没有...* Scala定义类用class关键字修饰 * 这个类默认有一个空参构造器 * 定义类名称后面的构造器叫主构造器 * 类的主构造器的属性会定义成类的成员变量 * 如果主构造器的成员属性没有...* Scala定义类用class关键字修饰 * 这个类默认有一个空参构造器 * 定义类名称后面的构造器叫主构造器 * 类的主构造器的属性会定义成类的成员变量 * 如果主构造器的成员属性没有...* Scala定义类用class关键字修饰 * 这个类默认有一个空参构造器 * 定义类名称后面的构造器叫主构造器 * 类的主构造器的属性会定义成类的成员变量 * 如果主构造器的成员属性没有

30030

Scala-12.对象(object)

objectScala是一个关键词,同时对象也是一个概念,即类的一个实例 asInstanceOf方法可以将一个实例强制转换为另一个期望的类型。...除非是确实有意为之,选择去覆盖 定义一个object,实现main方法 用object关键字创建的对象是Singleton的,对象的方法定义obejct而不是类,可以像Java调用静态方法 可以定义非静态的实例成员...,然后同一个文件再定义一个类相同名字的“静态”成员对象。...将要在所有类中共享的代码放在一个包的包对象,可以不引入类或者对象的前提下,让函数、字段和其他代码包级别可用。...case被创建时同事会为默认构造函数实现访问器(选择生成)和取值器(这回产生很多隐藏的代码膨胀) 通过apply方法可以Scala实现工厂方法。

59550

Scala篇】--Scala的函数

一、前述 Scala的函数还是比较重要的,所以本文章把Scala可能用到的函数列举如下,并做详细说明。 二、具体函数 1、Scala函数的定义 ?...scala函数有返回值时,可以写return,也可以不写return,会把函数中最后一行当做结果返回。当写return时,必须要写函数的返回值。...如果返回值可以一行搞定,可以将{}省略不写 传递给方法的参数可以方法中使用,并且scala规定方法的传过来的参数为val的,不是var的。...这种说法无论方法体里面什么逻辑都成立,scala可以把任意类型转换为Unit.假设,里面的逻辑最后返回了一个string,那么这个返回值会被转换成Unit,并且值会被丢弃。...hightFun3(f)(100,200)) println(hightFun3((a,b) =>{a+b})(200,200)) //以上这句话还可以写成这样 //如果函数的参数方法体只使用了一次

1.4K10

scala快速入门系列【伴生对象

本篇作为scala快速入门系列的第二十篇博客,为大家带来的是关于伴生对象的内容。 ? 伴生对象 Java,经常会有一些类,同时有实例成员又有静态成员。...scala,要实现类似的效果,可以使用伴生对象来实现。 我们还可以使用伴生对象来实现快速创建对象,例如: ?...这个object称为伴生对象,这个class称为伴生类 伴生对象必须要和半生类一样的名字 伴生对象和伴生类同一个scala源文件 伴生对象和伴生类可以互相访问private属性 示例 编写一个CustomerService...private [this] 访问权限 如果某个成员的权限设置为 private[this],表示只能在当前类访问。伴生对象也不可以访问。...示例 定义一个Person类,它包含两个字段:姓名和年龄 重写apply方法,使用Person类名就可以创建对象 main方法创建该类的对象,并打印姓名和年龄 参考代码 ?

31330

Scala 基础 (六):面向对象(下篇)

、特质 四、扩展内容 ---- 之前的文章总结了Scala面向对象模块基础的内容,接下来学习面向对象的高阶内容。...(伴生对象Scala是一门完全面向对象的语言,没有静态操作。...单例对象对应的类称之为伴生类,伴生对象的名称应该和伴生类名一致,必须在同一个文件。 单例对象的属性和方法都可以通过伴生对象名(类名)直接调用访问。...Scala obj(arg)的语句实际是调用该对象的 apply 方法,即 obj.apply(arg)。用以统一面向对象编程和函数式编程的风格。...trait 特质名 { // 代码块 } Scala 语言中,采用特质 trait(特征)来代替接口的概念 多个类具有相同的特征时,就可以将这个特征提取出来,用继承的方式来复用 Scala 的 trait

46010

Scala:统一的对象模型

类 图片展示了Scala的类层次结构。每一个类都继承自scala.Any,Any的子类可以划分为两个主要的范畴:值类型,继承自scala.AnyVal;引用类型,继承scala.AnyRef。...每一种Java的基本数据类型对应于值类型,通过预定义的类型别名进行映射,而AnyRef则对应于Java环境的根类:java.lang.Object。...Nothing是所有其它类型的子类,这个类没有任何实例,但是它可以作为类型参数体现价值,比如Nil就是List[Nothing]的实例,而ScalaList是协变的,从而对于所有的类型T,Nil 都是...extends Person val lst: List[Person] = List[Student](new Student) //程序没有问题,可以说明List是协变的 关于==,equals,eq:Scala...,==相当于是equals的别名,用于比较值是否相等,而eq 用于比较引用是否相等: val a = List(1, 2, 3) val b: List[Int] = List(1, 2, 3)

63950
领券