Scala中的类学习

从java了解类的情况下,了解Scala的类并不难。Scala类中的字段自动带getter和setter方法,用@BeanProperty注解生成javaBean对象的getXXX与setXXX方法

  • 构造Scala的类
class Counter {
// 初始化字段值value
private var value = 0
// 方法默认是public的
def increment() {
value +=1
} def current() = value
}
Scala中类不必声明为public,Scala源文件可以包含多个类,这些类都是默认public的。
// 构造对象调用Counter
val counter = new Counter()
// 一般习惯对改值器使用(),对取值器不适用()
counter.increment()
println(counter.current)
  • 构造类setXXX与getXXX
public class Person {
private int age;
public int getAge() {return age}
public void setAge(int age) {this.age =age}
// 在java中使用set,get方法对属性进行修改获取是比较好的一种方式。Scala中每个字段默认提供getter和setter方法
// get方法
def age = privateAge
// set方法
def age_(newValue: Int): Unit = {
if (newValue > privateAge) {
privateAge = newValue
}
}
// junit的测试
@Test
def testCounter(): Unit = {
val counter = new Counter()
counter.increment()
println(counter.current())
counter.age_(10)
println(counter.age)
// 类私有的自动无法创建对象.属性调用
}
// Scala的字段加@BeanProperty
import scala.reflect.BeanProperty
class Person {
@BeanProperty
// 默认会生成get/set方法
var name:String =_
}
  • 构造器
    定义以this开头的是辅助构造器
/**
* 辅助构造器
*
* @param username
*/
def this(username: String) {
this()
this.username = username
} /**
* 辅助构造器
* @param username
* @param score
*/
def this(username: String, score: Int) {
// 调用上一个构造器
this(name)
this.score = score
} // 3种方法构建对象
val p1 = new Person
val p2 = new Person("Bob")
val p3 = new Person("Bob",24) // 构建主构造器
class Person(val name:String="",val age:Int=10) {
println("这是构造方法")
def des = "name="+name+",age="+age
} val pserson = new Person("haha",12) 将会执行主构造方法
  • 内部类

和java类似,Scala中也有内部类,但是比java更丰富些,Scala中调用的方式是new OuterClass.innerClass而java中式outClass.new InnerClass()

    class NetWork {
class Member(val name: String) {
val contacts = new ArrayBuffer[Member]
} private val members = new ArrayBuffer[Member] def join(name: String) = {
val m = new Member(name)
members+=m
m
}
} val beijing = new network
val xian = new network
val s1 = beijing.join("Bob")
val s2 = beijing.join("Michael")
// 同一种类型可以同一个集合
s1.conttacts +=s2
val s3 = xian.join("Alice")
// 不可以将s3添加到s1中,因为不是同一个Network对象

Scala中的类学习的更多相关文章

  1. Scala学习(五)---Scala中的类

    Scala中的类 摘要: 在本篇中,你将会学习如何用Scala实现类.如果你了解Java或C++中的类,你不会觉得这有多难,并且你会很享受Scala更加精简的表示法带来的便利.本篇的要点包括: 1. ...

  2. Programming In Scala笔记-第十一章、Scala中的类继承关系

    本章主要从整体层面了解Scala中的类层级关系. 一.Scala的类层级 在Java中Object类是所有类的最终父类,其他所有类都直接或间接的继承了Object类.在Scala中所有类的最终父类为A ...

  3. Scala中的类和对象

    类的定义 使用class定义 类的字段 在类中使用var,val定义字段 类的方法 scala中,使用var定义字段默认提供setter和getter方法对应名称为 value_= 和value /* ...

  4. 4.scala中的类

    版权申明:转载请注明出处.文章来源:http://bigdataer.net/?p=269 排版乱?请移步原文获得更好的阅读体验 1.针对不同字段生成的方法 字段生成的方法备注 var/val nam ...

  5. java中String类学习

    java中String类的相关操作如下: (1)初始化:例如,String s = “abc”; (2)length:返回字符串的长度. (3)charAT:字符操作,按照索引值获得字符串中的指定字符 ...

  6. oc中的类学习笔记1

    1.oc中的类和构造方法 NSAutoreleasePool * pool =[[NSAutoreleasePool alloc] init]; NSAutoreleasePool是一个类,alloc ...

  7. java中String类学习笔记

    1.String的两种实例化方式 String str="hello";//直接赋值的方式: String str=new String("hello");// ...

  8. [java] java 中Unsafe类学习

    java不能直接访问操作系统底层,而是通过本地方法来访问.Unsafe类提供了硬件级别的原子操作,主要提供了以下功能: 1.通过Unsafe类可以分配内存,可以释放内存: 类中提供的3个本地方法all ...

  9. Scala 中 Any 类源码

    package scalaabstract class Any { def equals(that: Any): Boolean //值比较 def hashCode(): Int //hash值 d ...

随机推荐

  1. maven(19)-生命周期和内置插件

    生命周期和依赖一样,是maven中最重要的核心概念.平时在使用maven时并不一定需要知道生命周期,但是只有明白了生命周期,才能真正理解很多重要的命令和插件配置. default生命周期 defaul ...

  2. Apache服务器如何通过.htaccess文件设置防盗链?

    Apache服务器通过.htaccess文件设置防盗链 用户经常面对的一个问题就是服务器的流量问题,而站点文件被盗链是其中最为主要的部分.所谓盗链,是指其他网站直接链接我们网站上的文件,一般来说,盗链 ...

  3. SQL server数据库压缩空间

    SQL server数据库,在手动删除或者自动删除数据后,查看数据库物理文件发现占用空间并没有释放,果断采用万能的重启.(反正是自己用的一个服务器,随便玩.如果不是只有自己用的服务器,还是建议让运维或 ...

  4. [翻译] AYVibrantButton

    AYVibrantButton https://github.com/a1anyip/AYVibrantButton AYVibrantButton is a stylish button with ...

  5. DPM恢复点和保持期、常见问题排除指南

    “恢复点计划”确定应为该保护组创建多少个恢复点. 对于文件保护,选择希望创建恢复点的日期和时间. 对于支持增量备份的应用程序数据保护,同步频率决定了恢复点计划. 对于不支持增量备份的应用程序数据保护, ...

  6. 申请Let’s Encrypt永久免费SSL证书过程教程及常见问题

    配置证书https://easy.zhetao.com/   虽然目前Let’s Encrypt免费SSL证书默认是90天有效期,但是我们也可以到期自动续约,不影响我们的尝试和使用,为了考虑到文章的真 ...

  7. ZT 互联网——降级论

    互联网——降级论 投递人 Astar 发布于 2012-07-06 09:54 评论(110) 有30531人阅读  原文链接  [收藏]  « » 文/meditic 几乎一年没有写博客了,说没时间 ...

  8. python subprocess 和 multiprocess选择以及我遇到的坑

    The subprocess option: subprocess is 用来执行其他的可执行程序的,即执行外部命令. 他是os.fork() 和 os.execve() 的封装. 他启动的进程不会把 ...

  9. Oracle中修改sysman和dbsnmp密码正确流程

    1.停止dbconsole $ emctl stop dbconsole 查看状态,确认dbconsole已经停止 $ emctl status dbconsole   2.修改sysman用户和db ...

  10. python第二十五课——闭包

    满足闭包的三个条件: 1).有外部函数和内部函数这样的结构 2).外部函数中定义的变量被内部函数所使用 3).内部函数对象作为返回值被外部函数返回 演示闭包的定义和使用: def outer(): a ...