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 ...
随机推荐
- redis介绍(5)主从复制
redis的主从复制: 主从复制介绍:redis的主从复制情况下,一个master节点下可以有多个slave节点,而且每个slave节点又可以有很多slave节点,形成很大的集群量级,我简单画个图,如 ...
- MQTT介绍(1)简单介绍
MQTT目录: MQTT简单介绍 window安装MQTT服务器和client java模拟MQTT的发布,订阅 MQTT: MQTT(Message Queuing Telemetry Transp ...
- spring boot(9)-mybatis关联映射
一对多 查询type表的某一条数据,并且要同时查出所有typeid与之配置的user,最终要得到一个以下类型的Type对象 public class Type { String id; String ...
- 搜索关键字自动更正 - Oracle Endeca Server
做了几个Oracle Endeca 电商项目.每个项目都会有搜过关键字拼写错误更正(Spelling Correction)的需求.淘宝也有类似功能. Oracle Endeca Sever提供了关键 ...
- Android笔记:解决 Your project contains error(s),please fix them before running your application问题
解决 Your project contains error(s),please fix them before running your application问题 貌似好多人都有遇到这问题,而且网 ...
- Oracle EBS PO 接收事务处理查不到对应的数据
1. 有一种情况是采购订单的借记账户不对 不匹配OU 2. 有可能是因为接口表卡住了 PENDING状态的把对应的数据删除掉即可 3. 接收时发生异常那个,丢失了接收头,rcv_shipment_h ...
- PowerShell管理SCOM2007R2
get-operationsmanagercommand #定义RMS服务器名称(SCOM管理控制台所在服务器名称)#Connect to the RMS server and initialize ...
- apache的AllowOverride以及Options使用详解
通常利用Apache的rewrite模块对 URL 进行重写的时候, rewrite规则会写在 .htaccess 文件里.但要使 apache 能够正常的读取.htaccess 文件的内容,就必须对 ...
- (1)I/O流 (2)线程
1.I/O流1.1 ObjectOutputStream类(重点)(1)基本概念 java.io.ObjectOutputStream类主要用于将Java对象整体写入到输出流中. 只能将支持 java ...
- SOJ 4583 动态规划之分组背包
Description Sidney想去Gandtom家玩.但Sidney家和Gandtom家之间是高低不平.坑坑洼洼的土路.所以他需要用他的背包装几袋稀的泥,在路上铺平一些干的土,使路变成平整的泥土 ...