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

scala 语法深析

Unit :无返回值的函数类型,和void相对应 Nil :长度为0 的list Any所有类型的超类,任何实例都属于Any类型 AnyRef所有引用类型的超类 AnyVal所有值类型的超类 Nothing...class成为伴生类,class中的属性都是动态的,scala中的class类默认可以传参数,默认的传参数就是默认的构造函数。...object: 修饰的称为伴生对象;定义在object中的属性(字段、方法)都是静 态的,main函数写在里面;scala 中的object是单例对象,可以看成是定义静态的方法的类.object不可以传参数...②若想增加一个类的传入参数,则需要在声明的类中重写this构造函数,这样就可以在mian函数中声明有增加的属性的对象,当然原来的对象也可以声明。...this(id,name) fcp = facePower } apply方法 使用此方法时,可以在main函数中不通过new来创建一个对象,加载创建对象的这个类的时候,

64910

大数据--scala学习第一章:基础第二章:控制结构和函数第三章:数组第四章:字典和元组第五章:类第六章:对象第七章:包和引入第八章:继承第九章文件和正则表达式第十章特质:接口第十一章操作符第十二章函

6、Scala中没有static静态关键字,不过存在一个单例对象定义:object a{},该类中的方法可以直接通过类名调用,类似于静态方法。...3、测试某个对象属于哪个类使用isInstanceOf方法,当对象是该类或者子类的对象时返回True. 4、Scala中也有protected修饰符,与java中的一样 5、子类的辅助构造器不能调用父类的构造器只能通过子类的主构造器进行调用形式如下...8、对象构造是顺序:父类构造器-子类构造器 9、Scala中基本类型和until类型都继承与Anyval类,其他类都是AnyRef的子类,而Any类是整个继承层级的根节点类似于java中的object类...5、类构造器的调用顺序: 6、特质还可以继承类,该特质被实现时实现类自动继承特质的超类,假如我们的类已经扩展了另一个类,就必须该类是特质超类的超类。...5、参数推断,当你将一个匿名函数传递给函数或方法时,Scala会尽可能推断类型信息如:valueAtOneQuater((x)=>3*x)函数会推断出x的类型为Double。

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

    Scala语言快速了解一下?

    AnyAny是所有其他类的超类AnyRefAnyRef类是Scala里所有引用类(reference class)的基类上表中列出的数据类型都是对象,也就是说scala没有java中的原生类型。...):将未计算的参数表达式直接应用到函数内部;在进入函数内部前,传值调用方式就已经将参数表达式的值计算完毕,而传名调用是在函数内部进行参数表达式的值计算的。...元组的值是通过将单个的值包含在圆括号中构成的。...在子类中重写超类的抽象方法时,你不需要使用override关键字。Scala 使用 extends 关键字来继承一个类,继承会继承父类的所有属性和方法,Scala 只允许继承一个父类。...构造器的执行顺序:调用超类的构造器;特征构造器在超类构造器之后、类构造器之前执行;特征由左到右被构造;每个特征当中,父特征先被构造;如果多个特征共有一个父特征,父特征不会被重复构造所有特征被构造完毕,子类被构造

    3K102

    3小时Scala入门

    (4)使用sbt或者maven等项目管理工具将项目及其依赖编译成jar包, 再通过java -jar HelloWorld.jar执行。...十六,异常捕获 异常捕获的语句是 try...catch...finally... 此外还可以用throw抛出异常。 ? 十七,函数定义 Scala中的函数可以通过关键字def定义或者使用匿名函数。...二十二,构造器 Scala的类包括一个主构造器和若干个(0个或多个)辅助构造器。 主构造器即定义类时传参并用来初始化对象属性的构造器,它是隐含的。...二十四,继承和特征 Scala可以通过extends关键字指定从某个超类(父类)进行继承。 只有子类的主构造器可以调用超类的主构造器。 子类可以使用super引用超类的某个属性和方法。...二十六,Scala语言的设计哲学 1,一切皆对象 从整数,字符串,函数,类到各种数据结构,Scala中一切皆为对象,Any是它们的超类。

    1.6K30

    3小时Scala入门

    (4)使用sbt或者maven等项目管理工具将项目及其依赖编译成jar包, 再通过java -jar HelloWorld.jar执行。...十六,异常捕获 异常捕获的语句是 try...catch...finally... 此外还可以用throw抛出异常。 ? 十七,函数定义 Scala中的函数可以通过关键字def定义或者使用匿名函数。...二十二,构造器 Scala的类包括一个主构造器和若干个(0个或多个)辅助构造器。 主构造器即定义类时传参并用来初始化对象属性的构造器,它是隐含的。...二十四,继承和特征 Scala可以通过extends关键字指定从某个超类(父类)进行继承。 只有子类的主构造器可以调用超类的主构造器。 子类可以使用super引用超类的某个属性和方法。...二十六,Scala语言的设计哲学 1,一切皆对象 从整数,字符串,函数,类到各种数据结构,Scala中一切皆为对象,Any是它们的超类。

    1.6K30

    3小时Scala入门

    (4)使用sbt或者maven等项目管理工具将项目及其依赖编译成jar包, 再通过java -jar HelloWorld.jar执行。...十六,异常捕获 异常捕获的语句是 try...catch...finally... 此外还可以用throw抛出异常。 ? 十七,函数定义 Scala中的函数可以通过关键字def定义或者使用匿名函数。...二十二,构造器 Scala的类包括一个主构造器和若干个(0个或多个)辅助构造器。 主构造器即定义类时传参并用来初始化对象属性的构造器,它是隐含的。...二十四,继承和特征 Scala可以通过extends关键字指定从某个超类(父类)进行继承。 只有子类的主构造器可以调用超类的主构造器。 子类可以使用super引用超类的某个属性和方法。...二十六,Scala语言的设计哲学 1,一切皆对象 从整数,字符串,函数,类到各种数据结构,Scala中一切皆为对象,Any是它们的超类。

    3.5K20

    大数据利器--Scala语言学习(基础)

    Any Any是所有其他类的超类 AnyRef AnyRef类是Scala里所有引用类(reference class)的基类 3、函数式编程 函数式编程基础 1) 函数定义/声明 2) 函数运行机制...在 Scala 当中,函数是一等公民,像变量一样,既可以作为函数的参数使用,也可以将函数赋值给一个变量....@BeanProperty var name : String = "" } //Java 中如果想要导入包中所有的类,可以通过通配符*,Scala 中采用下 _ //如果不想要某个包中全部的类,而是其中的几个类...3) 伴生对象中的属性和方法都可以通过伴生对象名直接调用访问 4) 从语法角度来讲,所谓的伴生对象其实就是类的静态方法和静态变量的集合 5) 从技术角度来讲,scala 还是没有生成静态的内容,只不过是将伴生对象生成了一个新的类...具体实现请参考“特质叠加” 第一种特质构造顺序(声明类的同时混入特质) 1) 调用当前类的超类构造器 2) 第一个特质的父特质构造器 3) 第一个特质构造器 4) 第二个特质构造器的父特质构造器,

    1K10

    Scala-8.面向对象-构造函数

    Scala类的主构造函数是以下组合: 构造函数参数 在类内部被调用的方法 在类内部执行的语句和表达式 和Java类似,类被实例化的时候它们会被赋值。...辅助构造函数必须用this为名创建 每个辅助构造函数必须从调用之前定义的构造函数开始 一个构造函数通过this调用另一个不同的构造函数 case class里添加的辅助构造函数不是构造函数,是类的伴生对象中的...通常需要吧字段定义为Option可以给到一个默认的初始值 * 继承类的构造函数参数:将基类的构造函数的参数定义为var或者val。...* 调用父类的构造函数:在Scala定义子类时,可以在子类定义extends时控制被其主构造函数调用的超类构造函数。...* 辅助构造函数的第一行必须调用当前类的另一个构造函数,好久无法调用超类的构造函数

    98540

    PHP的反射类ReflectionClass、ReflectionMethod使用实例

    它是指在PHP运行状态中,扩展分析PHP程序,导出或提取出关于类、方法、属性、参数等的详细信息,包括注释。这种动态获取的信息以及动态调用对象的方法的功能称为反射API。...6.Person类是否为final或者abstract 7.Person类是否有某个方法 接下来反射它,只要把类名”Person”传递给ReflectionClass就可以了: 代码如下: $class...函数里面的值回传到构造函数里面) obj->newInstance(3,4)->a();//输出a, //取出类的方法并使用这个方法,这个函数返回的是ReflectionMethod对象了 method...=obj->getMethod(‘a’); //使用ReflectionMethod方法就是执行这个方法,函数里面的值一个对象示例 method->invoke( //传参 method=obj...如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    2.2K20

    3小时Java入门

    并且这个main函数需要声明为 public static void 类型,即静态的,公开的,返回值为空的函数类型。 并且这个java程序的文件名必须和这个public类名保持一致。 ?...十八,构造方法 构造方法是类的一个特殊的方法,构造方法名就是类名。 构造方法没有return返回值,也没有void声明。...静态属性和静态方法属于类而不属于特定的实例,在类的实例之间共享。 可以通过类名直接调用静态属性和静态方法,也可以通过实例对象间接调用。 静态方法中不能够通过this关键字使用实例属性。 ? ?...二十四,反射 通常我们通过类来创建实例,但反射机制让我们能够通过实例来获取类的信息。 包括类的名字,类的属性和方法签名,类的继承关系等等。...Java中的类支持静态属性和静态方法,Scala用伴生对象和伴生方法概念将静态属性和方法与实例属性和方法分离。 Java的循环中支持break和continue关键字,Scala的循环中不支持。

    2.7K30

    大数据技术之_16_Scala学习_05_面向对象编程-中级

    ()函数 就是【包对象】 scala 中声明的函数 sayOk       }     }     object TestObj {       def main(args: Array[String...7.2.2 Scala 中包的可见性介绍   在 Java 中,访问权限分为: public,private,protected 和默认。在 Scala 中,你可以通过类似的修饰符达到同样的效果。...这种语法的好处是:在需要时在引入包,缩小 import 包的作用范围,提高效率。 2、Java 中如果想要导入包中所有的类,可以通过通配符*,Scala 中采用下划线。 ?...7.6.7 Scala 中超类的构造 Scala 超类的构造说明   1、类有一个主构器和任意数量的辅助构造器,而每个辅助构造器都必须先调用主构造器(也可以是间接调用),这点在前面我们说过了。   ...2、只有子类的主构造器可以调用父类的构造器(主和辅均可)。子类的辅助构造器不能直接调用父类的构造器。在 Scala 的子类的构造器中,你不能调用 super(params)。

    1.3K30

    Scala专题系列(五):类与对象

    这对于较大的应用程序是必不可少的。因此, Scala 将两者完美地结合在了一起。...1.scala中,主构造器的参数直接放在类名后面 class person(val name:String,val age:Int){ ….. } 主构造器的参数被编译成自段,其值被初始化成构造时传入的参数...如果不带val或var的桉树至少被一个方法所使用,那么它将是字段 辅助构造器 和java一样,Scala也可以有任意多的构造器 1:辅助构造器的名称为this,在java中辅助构造器的名称与类名相同 2...在scala中,几乎可以在任何语法结构中内嵌任何语法结构,可以在函数中定义函数,可以在类中定义类 class Network{ class member{ } } val net = new...在集合那个篇章里面,有讲到一个val list = List("1","2") 其实这个内部就是一个伴生类, 在java中,会用到既有实例方法又有静态方法的类,在Scala中,可以通过类和与类名同名的"

    57230

    Scala简介:面向对象和函数式编程的组合

    函数类型是能够被子类继承的类。这看上去似乎不外乎学术上的美感,但它从深层次上影响了可伸展性。实际上之前看到的行动类这个概念如果没有这种函数和对象的联合将无法实现。...本节将浏览Scala融合面向对象和函数概念的方法。 Scala是面向对象的 面向对象编程已经无与伦比地成功了。...这看上去有点儿像多重继承,但在细节上是有差异的。与类不同,特质可以可以把一些新的功能加入到还未定义的超类中。这使得特质比类更具有“可加性”。...尤其特别的是,它避免了多重继承里面,当同样的类被通过若干不同渠道继承时发生的,经典的“菱形继承”问题。...你可以把函数当作参数传递给其他函数,当作结果从函数中返回或保存在变量里。你也可以在函数里定义其他函数,就好像在函数里定义整数一样。

    1.2K60

    Java代码审计基础之反射

    类在运行的时候,可以得到该类的信息,并且可以动态的修改这些信息 反射类的首要操作 - 获取类 获取类有 三种 方法: 假设类名为 Cat (1)直接根据类名获取类 Class a = Cat.class...try{ //获取到类 Class a = Cat.class; //通过反射获取到指定类下的构造方法 //要获取的构造方法为: //public Cat()...一个参数的构造方法调用 try{ //获取到类 Class a = Cat.class; //通过反射获取到指定类下的构造方法 //要获取的构造方法为: //public...反射方法 简介: 反射方法和上文的反射构造方法差不多,如果是私有的话也是要设置强行调用,并且获取方法的函数为 getDeclaredxxxx 吾有一类: class Cat{ public void...反射调用 Runtime.getRuntime().exec 第一种方式,通过强行反射私有构造方法,用 Runtime 实例化进行反射 这里有一个小坑,Runtime的构造函数是私有的: ?

    50340

    Zzreal的大数据笔记-ScalaDay02

    var name1 = name var age1 = age private var gender = false /** * class Day01(name:String,age:Int) 带参类的声明是这个类的主构造器...* 在类里面可以添加从构造器来定义各种参数不同的构造,参数可以比主构造器多,也可以少。...} } /** * Scala中的object是静态类,main方法只能写在object中 * 执行程序有两种方法 1)写main方法 2)object 继承App */ object Demo extends...//运行结果:(3,true) //调用方法可以 类名.方法(参数)或者 类名 方法 参数 println(Day01.show("name")) println(Day01 show "bitch")...* 传值函数值执行一次参数中的方法,将返回值作为参数调用主函数 * 传名函数先执行主函数,遇到参数的时候执行一次参数里的函数,遇到几次执行几次 * 高阶函数相似于传名函数,传名不带参数

    534100

    Java反射:用最直接的大白话来聊一聊Java中的反射机制

    >… parameterTypes) public Field getDeclaredField(String name) 这些方法分别用于帮咱们从类中解剖出构造函数、方法和成员变量(属性)。...2.1反射构造方法 2.1.1反射无参的构造函数 可以看到 默认的无参构造方法执行了 从上边的例子看出,要想反射,首先第一步就是得到类的字节码 所以简单说一下得到类的字节码的几种方式 (1)、Class.forName...(“com.cj.test.Person”); 这就是上边我们用的方式 (2)、对象.getClass(); (3)、类名.class; 2.1.2反射“一个参数”的构造函数 2.1.3反射“多个参数...”的构造函数 2.1.4反射“私有”的构造函数 注意:在反射私有的构造函数时,用普通的clazz.getConstructor()会报错,因为它是私有的,所以提供了专门反射私有构造函数的方法 clazz.getDeclaredConstructor...(int.class);//读取私有的构造函数,用这个方法读取完还需要设置一下暴力反射才可以 c.setAccessible(true);//暴力反射 2.1.5反射得到类中所有的构造函数 2.2反射类中的方法

    37830

    JavaSE 语法基础 --- 反射(基础知识问答+代码详解)

    java反射创建对象效率高还是通过new创建对象的效率高? 实例化对象的方式有哪些? 哪里用到反射机制? 反射的应用场景有哪些?...Java中的反射首先是能够获取到 Java 中要反射类的字节码获 取字节码有三种方法 : Class.forName(className) 类名.class this.getClass() 然后将字节码中的方法...,变量,构造函数等映射成相应的 Method、Filed、Constructor 等类,这些类提供了丰富的方法可以被我们所使用。...Constructor 类 Java.lang.reflec 包中的类,表示类的构造方法。 java反射创建对象效率高还是通过new创建对象的效率高? 通过new创建对象的效率比较高。...通过反射时,先找查找类资源,使用类加载器创建,过程比较繁琐,所以效率较低。 实例化对象的方式有哪些?

    27610

    C#反射机制

    B超是B型超声波,它可以透过肚皮通过向你体内发射B型超声波,当超声波遇到内脏壁的时候就会产生一定的“回音”反射,然后把“回音”进行处理就可以显示出内脏的情况了。...反射是.NET中的重要机制,通过反射,可以在运行时获得程序或程序集中每一个类型(包括类、结构、委托、接口和枚举等)的成员和成员的信息。有了反射,即可对每一个类型了如指掌。...(2)查看类中的构造方法 我们可以根据对象进而查看内部的构造函数以及参数。...(3)用构造函数动态生成对象 我们使用构造函数动态创建一个新的对象,如下代码所示: (4) 用Activator生成对象 上面代码中,Activator.CreateInstance第一个参数为需要创建对象的类型...,后面的为调用构造函数的参数,上面的三种格式都可以,只是调用的构造函数不同而已。

    19230

    Scala基础知识

    基础语法 scala区分大小写 类名第一个字母要大写 方法名称第一个字母小写 程序入口定义def main(args:Array[String]) scala注释 // /* */ Scala...第一行 package 包名 scala导入包 import 包名 scala数据类型 与java基本相同 有几个不同的 Unit:和java的void类似,无返回值 Nothing:在scala...的类层级的最低端,是任何其他类型的子类型 Any:是其他所有类的超类 scala变量 var/val 变量名:数据类型=值 scala关键字 与java基本相同 private protected...public if…..else while do…while for scala函数 def 方法名称(参数:数据类型):返回值={方法体} 函数传名调用 函数可变参数 递归函数...类和对象 class 类名(类参数 变量:数据类型){ } 继承:只有主构造函数才可以往基类的构造函数里写参数。 子类重写非抽象方法的时候,必须使用override关键字。

    32910
    领券