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. Oracle EBS 计划请求

    SELECT fcp.concurrent_program_name, decode(fcre.description, NULL, fcpt.user_concurrent_program_name ...

  2. gitbook 入门

    安装 gitbook 插件 npm install gitbook-cli -g 或者 yarn global add gitbook-cli 初使化目录 gitbook init 会发现目录下面多了 ...

  3. mac 打开整个系统的隐藏文件

    打开:defaults write com.apple.finder AppleShowAllFiles -bool true 关闭:defaults write com.apple.finder A ...

  4. [翻译] CHTCollectionViewWaterfallLayout

    CHTCollectionViewWaterfallLayout https://github.com/chiahsien/CHTCollectionViewWaterfallLayout CHTCo ...

  5. [UI] 精美UI界面欣赏[5]

    精美UI界面欣赏[5]

  6. UITabBar设置详解

    UITabBar设置详解 效果图 说明 1. 设置tabBarItem中的图片以及标题 2. 设置标题文本样式 3. 修改tabBar背景色 源码 https://github.com/YouXian ...

  7. Linux系统清除多余的账号

    清除多余的账号 注释掉/etc/passwd文件中nologin的行 grep 'nologin' /etc/passwd 注: 目前暂没想到用命令行替换,后面再想想

  8. Android点击事件

    Android点击事件 备注 全局实现View.OnClickListener 或许需要将MainActivity设置为public 注册事件 btn_login.setOnClickListener ...

  9. 【ORACLE】 安装需要注意的问题(一)

    安装ORACLE虽然不是很难,但是有时候很容易因为一些小细节导致安装失败,浪费大量的时间. 这里总结一下安装ORACLE的时候需要注意的问题,以及解决的办法 问题1:系统先决条件检查 正在检查操作系统 ...

  10. Mysql数据库字符集问题

    修改mysql数据库的默认编码方式 修改my.ini文件 加上 default-character-set=gb2312 设定数据库字符集 alter database da_name default ...