Scala中的类学习
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中的类学习的更多相关文章
- Scala学习(五)---Scala中的类
Scala中的类 摘要: 在本篇中,你将会学习如何用Scala实现类.如果你了解Java或C++中的类,你不会觉得这有多难,并且你会很享受Scala更加精简的表示法带来的便利.本篇的要点包括: 1. ...
- Programming In Scala笔记-第十一章、Scala中的类继承关系
本章主要从整体层面了解Scala中的类层级关系. 一.Scala的类层级 在Java中Object类是所有类的最终父类,其他所有类都直接或间接的继承了Object类.在Scala中所有类的最终父类为A ...
- Scala中的类和对象
类的定义 使用class定义 类的字段 在类中使用var,val定义字段 类的方法 scala中,使用var定义字段默认提供setter和getter方法对应名称为 value_= 和value /* ...
- 4.scala中的类
版权申明:转载请注明出处.文章来源:http://bigdataer.net/?p=269 排版乱?请移步原文获得更好的阅读体验 1.针对不同字段生成的方法 字段生成的方法备注 var/val nam ...
- java中String类学习
java中String类的相关操作如下: (1)初始化:例如,String s = “abc”; (2)length:返回字符串的长度. (3)charAT:字符操作,按照索引值获得字符串中的指定字符 ...
- oc中的类学习笔记1
1.oc中的类和构造方法 NSAutoreleasePool * pool =[[NSAutoreleasePool alloc] init]; NSAutoreleasePool是一个类,alloc ...
- java中String类学习笔记
1.String的两种实例化方式 String str="hello";//直接赋值的方式: String str=new String("hello");// ...
- [java] java 中Unsafe类学习
java不能直接访问操作系统底层,而是通过本地方法来访问.Unsafe类提供了硬件级别的原子操作,主要提供了以下功能: 1.通过Unsafe类可以分配内存,可以释放内存: 类中提供的3个本地方法all ...
- Scala 中 Any 类源码
package scalaabstract class Any { def equals(that: Any): Boolean //值比较 def hashCode(): Int //hash值 d ...
随机推荐
- Oracle EBS 计划请求
SELECT fcp.concurrent_program_name, decode(fcre.description, NULL, fcpt.user_concurrent_program_name ...
- gitbook 入门
安装 gitbook 插件 npm install gitbook-cli -g 或者 yarn global add gitbook-cli 初使化目录 gitbook init 会发现目录下面多了 ...
- mac 打开整个系统的隐藏文件
打开:defaults write com.apple.finder AppleShowAllFiles -bool true 关闭:defaults write com.apple.finder A ...
- [翻译] CHTCollectionViewWaterfallLayout
CHTCollectionViewWaterfallLayout https://github.com/chiahsien/CHTCollectionViewWaterfallLayout CHTCo ...
- [UI] 精美UI界面欣赏[5]
精美UI界面欣赏[5]
- UITabBar设置详解
UITabBar设置详解 效果图 说明 1. 设置tabBarItem中的图片以及标题 2. 设置标题文本样式 3. 修改tabBar背景色 源码 https://github.com/YouXian ...
- Linux系统清除多余的账号
清除多余的账号 注释掉/etc/passwd文件中nologin的行 grep 'nologin' /etc/passwd 注: 目前暂没想到用命令行替换,后面再想想
- Android点击事件
Android点击事件 备注 全局实现View.OnClickListener 或许需要将MainActivity设置为public 注册事件 btn_login.setOnClickListener ...
- 【ORACLE】 安装需要注意的问题(一)
安装ORACLE虽然不是很难,但是有时候很容易因为一些小细节导致安装失败,浪费大量的时间. 这里总结一下安装ORACLE的时候需要注意的问题,以及解决的办法 问题1:系统先决条件检查 正在检查操作系统 ...
- Mysql数据库字符集问题
修改mysql数据库的默认编码方式 修改my.ini文件 加上 default-character-set=gb2312 设定数据库字符集 alter database da_name default ...