1、  定义一个简单的类

2、getter与setter

3、自定义getter与setter方法

4、仅暴露field的getter方法

5、private[this]的使用

6、Java风格的getter和setter方法

7、辅助constructor

8、主constructor

9、内部类

1、  定义一个简单的类

  定义类和创建类的对象,并调用其方法

  

2、getter与setter

  定义不带private的var field,scala自动生成getter和setter方法。

  使用private修饰,则生成的getter和setter也是private的。

  定义val field 则只会生成getter方法。

  不希望生成setter和getter方法,则将field声明为private[this]。

  调用getter和setter方法,分别叫做name和name_=。

  

3、自定义getter与setter方法

  如果希望能够自己对getter和setter方法进行控制,则可以自定义getter和setter方法,自定义setter方法的时候一定要注意scala的语法限制,签名、=、参数之间不能有空格。

  

4、仅暴露field的getter方法

  如果希望能够仅仅暴露一个getter方法,并且还能通过某些方法更改field的值,那么需要综合使用private以及自定义getter方法。此时field是private的,对外界没有暴露,自己可以实现修改field值的方法,可以覆盖getter方法。

  

5、private[this]的使用

  在类的方法中,可直接访问类的其他对象的private field,有些情况下,不希望field被其他对象访问到,那么可以使用private[this],意味着对象私有的field,只有本对象内可以访问到。

  

  

6、Java风格的getter和setter方法

  Scala的getter和setter方法的命名与java是不同的,是field和field_=的方式。如果要让scala自动生成java风格的getter和setter方法,只要给field添加@BeanProperty注解即可。此时会生成4个方法,name:String、name_=(newValue:String):Unit、getName():String、setName(newValue:String):Unit。

  

  

7、辅助constructor

  Scala中,可以给类定义多个辅助constructor,类似于java的构造函数重载。辅助constructor之间可以相互调用,而且必须第一行调用主constructor。

  

8、主constructor

  Scala中,主constructor是与类名放在一起的,与java不同。在类中,没有定义在任何方法或者代码块之中的代码,就是主constructor的代码,这点没java那么清晰。

  

  主contructor中还可以通过使用默认参数,给参数设置默认的值。

  

  如果主constructor传入的参数什么修饰都没有,比如name:String,那么类内部的方法是用到了,则会声明为private[this] name;否则没有该field,就只能被constructor代码使用而已。

  

9、内部类

  Scala中,可以在类中定义内部类,与java不同,每个外部类的对象的内部类,都是不同的类。

  

7、scala面向对象编程之类的更多相关文章

  1. 6. Scala面向对象编程(基础部分)

    6.1 基本介绍 6.1.1 Scala语言是面向对象的 1) Java时面向对象的编程语言,由于历史原因,Java中海存在着非面向对象的内容:基本类型,null,静态方法等 2) Scala语言来自 ...

  2. Scala面向对象编程与类型系统

    Scala支持面向对象编程, 其面向对象特性与Java有共同之处并添加了很多新的特性. 类定义 scala使用class关键字定义类: class MyComplex(real0:Double, im ...

  3. 7. Scala面向对象编程(中级部分)

    7.1 包 7.1.1 看一个应用场景 现在有两个程序员共同开发一个项目,程序员xiaoming希望定义一个类取名Dog,程序员xiaohong也想定一个类也叫Dog,两个程序员还为此吵了起来,该怎么 ...

  4. 大数据笔记(二十四)——Scala面向对象编程实例

    ===================== Scala语言的面向对象编程 ======================== 一.面向对象的基本概念:把数据和操作数据的方法放到一起,作为一个整体(类 c ...

  5. Scala实战高手****第7课:零基础实战Scala面向对象编程及Spark源码解析

    /** * 如果有这些语法的支持,我们说这门语言是支持面向对象的语言 * 其实真正面向对象的精髓是不是封装.继承.多态呢? * --->肯定不是,封装.继承.多态,只不过是支撑面向对象的 * 一 ...

  6. 2.3 Scala面向对象编程基础

    一.类 1.类的定义 Unit表示什么都不返回 方法体最后一句的值,就是方法的返回值. 2.类成员的可见性 3.方法的定义方式 定义方法的时候加圆括号,调用时可以加圆括号c.getValue()也可以 ...

  7. 8. Scala面向对象编程(高级部分)

    8.1 静态属性和静态方法 8.1.1 静态属性-提出问题 有一群小孩在玩堆雪人,不时有新的小孩加入,请问如何知道现在共有多少人在玩?请使用面向对象的思想,编写程序解决 8.1.2 基本介绍 -Sca ...

  8. Scala 面向对象编程之类

    定义一个简单的类 // 定义类,包含field以及方法 class HelloWorld { private var name = "leo" def sayHello() { p ...

  9. scala函数式编程(二) scala基础语法介绍

    上次我们介绍了函数式编程的好处,并使用scala写了一个小小的例子帮助大家理解,从这里开始我将真正开始介绍scala编程的一些内容. 这里会先重点介绍scala的一些语法.当然,这里是假设你有一些ja ...

随机推荐

  1. MAPZONE GIS SDK接入Openlayers3之二——空间参考扩展

    Openlayers默认了两种空间参考,一个是EPSG4326,一个是EPSG3857,其它的空间参考需要进行扩展才能使用.所以我们初始化时进行了如下操作: 1.将配置数据库中所有的空间参考读取出来, ...

  2. ASM instance正常启动,但是用sqlplus 连不上的问题

    首先,这是oracle 11g 11.0.2.3 版本.这是一个神奇的问题. asm instance启动正常,但是用sqlplus 去连接的时候会显示如下: [oracle@racnode1 ~]$ ...

  3. 安全简单解决MVC 提示 检测到有潜在危险的 Request.Form 值.

    一般使用富文本编辑器的时候.提交的表单中包含HTML字符,就会出现此错误提示. 使用 ValidateInput(false) 特性标签并不能解决此问题. 网上前篇一律的回答是修改Web.Config ...

  4. RxJava系列之二 变换类操作符具体解释1

    1.回想 上一篇文章我们主要介绍了RxJava , RxJava 的Observables和 RxJava的just操作符.以及RxJava一些经常使用的操作. 没看过的抓紧点我去看吧. 事实上RxJ ...

  5. varnish代理server笔记

    varnish是一款开源的代理server软件.和Squid的差别是採用内存进行数据缓存. 速度很的快,并且不easy崩溃.可是奔溃之后全部数据都消失,导致全部请求全部发送至后台server端,这是其 ...

  6. vim学习笔记(1)——vim操作

    仅记录一些自己最经常使用的vim操作.随时更新 文本操作 d 剪切.双击剪切一行 y 复制,双击复制一行 p 粘贴 x 删除当前光标下字符 r 替换当前光标字符.后面接替换的字符 :s/old/new ...

  7. 20170620_javaweb_小结

    01.session失效的方式 02. session和cookie的区别 03.jsp九大内置对象,意义 以及对应的java类 04.转发和重定向 05.jsp的执行过程 和 生命周期 06.实现s ...

  8. Asp.NET之对象学习

    一.总述 二.具体介绍 1.Request对象 Request对象是用来获取client在请求一个页面或传送一个Form时提供的全部信息,这包含可以标识浏览器和用户的HTTP变量,存储在client的 ...

  9. Gift

    [问题描述] 人生赢家老王在网上认识了一个妹纸,然后妹纸的生日到了,为了表示自己的心 意,他决定送她礼物.可是她喜爱的东西特别多,然而他的钱数有限,因此他想 知道当他花一定钱数后剩余钱数无法再购买任何 ...

  10. 洛谷 P4149 [ IOI 2011 ] Race —— 点分治

    题目:https://www.luogu.org/problemnew/show/P4149 仍然是点分治: 不过因为是取 min ,所以不能用容斥,那么子树之间就必须分开算,记录桶时注意这个: 每次 ...