object MyApp{
def main(args: Array[String]): Unit = {
// for(ジェネレータ ※変数<-データ集合)
for (i <- 0 to 3; j <- 0 to 3 if i != j) println(s"i, $j")
}
}
method
object MyApp{
// method
def sayHi: String = {
// println("hi!")
"hi!"
}
def main(args: Array[String]): Unit = {
println(sayHi)
}
}
メソッドの引数
object MyApp{
def sayHi(name: String = "yokota", age: Int = 23): Unit = {
println(s"hi! $name ($age)")
}
def main(args: Array[String]): Unit = {
sayHi("bob", 35)
sayHi("tom", 43)
sayHi()
sayHi(age = 18, name="jack")
}
}
class
class User {
val name = "my name"
def sayHi() = println("hi!")
}
object MyApp{
def main(args: Array[String]): Unit = {
val user = new User
println(user.name)
user.sayHi()
}
}
コンストラクタ引数
class User(_name: String) {
val name = _name
def sayHi() = println("hi!" + this.name)
}
object MyApp{
def main(args: Array[String]): Unit = {
val tom = new User("tom")
println(tom.name)
tom.sayHi()
}
}
継承、override
class User(val name: String) {
def sayHi() = println("hi!" + this.name)
}
class AdminUser(name: String, val age: Int) extends User(name) {
def sayHello() = println("hello!" + name + "(" + age + ")")
override def sayHi() = println("[admin] hi " + name)
}
object MyApp{
def main(args: Array[String]): Unit = {
val bob = new AdminUser("bob", 23)
println(bob.name)
println(bob.age)
bob.sayHi()
bob.sayHello()
}
}
package
package com.hpscript.model
class User(val name: String) {
def sayHi() = println("hi!" + this.name)
}
class AdminUser(name: String, val age: Int) extends User(name) {
def sayHello() = println("hello!" + name + "(" + age + ")")
override def sayHi() = println("[admin] hi " + name)
}
アクセス修飾子
class User {
protected var name = "user"
def sayHi() = println("hi!" + this.name)
}
class AdminUser extends User {
override def sayHi() = println("[admin] hi " + name)
}
object MyApp{
def main(args: Array[String]): Unit = {
val user = new User
val adminUser = new AdminUser
// println(user.name)
user.sayHi()
adminUser.sayHi()
}
}
object
object User {
def getInfo() = println("User Object")
}
class User(val name: String) {
def sayHi() = println("hi!" + this.name)
}
object MyApp{
def main(args: Array[String]): Unit = {
User.getInfo()
}
}
抽象クラス
abstract class User{
def sayHi()
}
class Japanese extends User {
def sayHi() = println("こんにちは")
}
class American extends User {
def sayHi() = println("hello")
}
object MyApp{
def main(args: Array[String]): Unit = {
val aki = new Japanese
val tom = new American
aki.sayHi()
tom.sayHi()
}
}
trait
trait Printable {
def print() = println("now printing ...")
}
trait Sharable {
def share() = println("now sharing ...")
}
class User extends Printable with Sharable
object MyApp{
def main(args: Array[String]): Unit = {
val user = new User
user.print()
user.share()
}
}
型パラメータ
//class MyInt {
// def getThree(i: Int): Unit = println(s"$i $i $i")
//}
class MyData[T]{
def getThree(i: T): Unit = println(s"$i $i $i")
}
object MyApp{
def main(args: Array[String]): Unit = {
val i = new MyData[Int]
i.getThree(5)
val s = new MyData[String]
s.getThree("hello")
}
}