1. 改进5.1节的Counter类,让它不要在Int.MaxValue时变成负数。
/**
* Created by Ibuki Suika on 2014/5/26.
*/
class Counter {
private var value = 0
def increment() {
if (value + 1 < Int.MaxValue) {
value += 1
}
}
def current = value
}
object ScalaApp {
def main(args: Array[String]) {
val counter = new Counter
for (_ <- 1 to Int.MaxValue) {
counter.increment()
}
println(counter.current)
}
}
/**
* Created by Ibuki Suika on 2014/5/26.
*/
class BankAccount(val balance: Int) {
def deposit {println("deposit")}
def withdraw {println("withdraw")}
}
object ScalaApp {
def main(args: Array[String]) {
val account = new BankAccount(100)
account.deposit
account.withdraw
println(account.balance)
}
}
/**
* Created by Ibuki Suika on 2014/5/26.
*/
class Time(private var hrs: Int, private var min: Int) {
if (hours < 0 || hours >= 24) hrs = 0
if (min < 0 || min >= 60) min = 0
def before(other: Time) = {
hours < other.hours || (hours == other.hours && minutes < other.minutes)
}
def hours = hrs
def minutes = min
}
object ScalaApp {
def main(args: Array[String]) {
val time1 = new Time(9, 20)
val time2 = new Time(10, 12)
println(time1.before(time2))
}
}
/**
* Created by Ibuki Suika on 2014/5/26.
*/
class Time(hrs: Int, min: Int) {
private var total = 0
if (hrs >= 0 && hrs < 24) {
total += hrs * 24
}
if (min > 0 && min < 60) {
total += min
}
def before(other: Time) = {
total < other.total
}
def hours = total / 60
def minutes = total % 60
}
object ScalaApp {
def main(args: Array[String]) {
val time1 = new Time(9, 20)
val time2 = new Time(10, 12)
println(time1.before(time2))
}
}
/**
* Created by Ibuki Suika on 2014/5/26.
*/
import scala.beans.BeanProperty
class Student(@BeanProperty var name: String, @BeanProperty var id: Long) {
}
object ScalaApp {
def main(args: Array[String]) {
val student = new Student("Tom", 1000)
println(student.name)
println(student.id)
}
}
/**
* Created by Ibuki Suika on 2014/5/26.
*/
class Person(private var privateAge: Int) {
if (privateAge < 0) privateAge = 0
def age = privateAge
def age_=(value: Int) {
if (value > 0) {
privateAge = value
}
}
}
object ScalaApp {
def main(args: Array[String]) {
val person = new Person(-1)
println(person.age)
person.age = 10
println(person.age)
}
}
/**
* Created by Ibuki Suika on 2014/5/26.
*/
class Person(name: String) {
val firstName = name.split(" ")(0)
val lastName = name.split(" ")(1)
}
object ScalaApp {
def main(args: Array[String]) {
val person = new Person("Fred Smith")
println(person.firstName)
println(person.lastName)
}
}
/**
* Created by Ibuki Suika on 2014/5/26.
*/
class Car(val maker: String, val name: String, val year: Int, var card: String) {
def this(maker: String, name: String, year: Int) {
this(maker, name, year, "")
}
def this(maker: String, name: String, card: String) {
this(maker, name, -1, card)
}
def this(maker: String, name: String) {
this(maker, name, -1, "")
}
}
object ScalaApp {
def main(args: Array[String]) {
val car = new Car("IBM", "Nexu", 1999)
println(car.maker)
println(car.name)
println(car.year)
println(car.card)
}
}
class Employee(val name: String, var salary: Double) {
def this() {this("John Q. Public", 0.0)}
}
重写该类,使用显式的字段定义,和一个缺省主构造器。你更倾向于使用哪一种形式?为什么?
/**
* Created by Ibuki Suika on 2014/5/26.
*/
class Employee {
private var emName = ""
private var emSalary = 0.0
def this(n: String, s: Double) {
this()
this.emName = n
this.emSalary = s
}
def name = emName
def salary = emSalary
}
object ScalaApp {
def main(args: Array[String]) {
val employee = new Employee("Jim", 1800.9)
println(employee.name)
println(employee.salary)
}
}