読者です 読者をやめる 読者になる 読者になる

落書きノート

ふと自分が気になった事を書いてます

Scala クラス

Welcome to Scala 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_05).
Type in expressions for evaluation. Or try :help.

scala> class Programmer{
     | var language = "Scala"
     | def coding() = println(language + "を使ってコーディングします")
     | }
defined class Programmer

scala> val pg = new Programmer
pg: Programmer = Programmer@61e4705b

scala> pg.coding()
Scalaを使ってコーディングします

scala> pg.language = "Java"
pg.language: String = Java

scala> pg.language
res1: String = Java

scala> pg.coding()
Javaを使ってコーディングします

scala> class Programmer{
     | println("Programmerインスタンスを生成します")
     | var language = "Scala"
     | def coding() = println(language + "を使ってコーディングします")
     | }
defined class Programmer

scala> val pg = new Programmer
Programmerインスタンスを生成します
pg: Programmer = Programmer@3cb5cdba

scala> class Programmer(var language:String){
     | println("Programmerインスタンスを生成します")
     | println("language = " + language)
     | def coding() = println(language + "を使ってコーディングします")
     | }
defined class Programmer

scala> val pg = new Programmer("Java")
Programmerインスタンスを生成します
language = Java
pg: Programmer = Programmer@366e2eef

scala> pg.coding()
Javaを使ってコーディングします

scala> class Programmer(_language:String){
     | println("Programmerインスタンスを生成します")
     | println("language = " + _language)
     | val language = _language
     | def coding() = println(language + "を使ってコーディングします")
     | }
defined class Programmer

scala> val pg = new Programmer("Ruby")
Programmerインスタンスを生成します
language = Ruby
pg: Programmer = Programmer@239963d8

scala> pg.coding()
Rubyを使ってコーディングします

scala> class Programmer(val language:String){
     | println("Programmerインスタンスを生成します")
     | println("language = " + language)
     | def coding() = println(language + "を使ってコーディングします")
     | }
defined class Programmer

scala> val pg = new Programmer("Java")
Programmerインスタンスを生成します
language = Java
pg: Programmer = Programmer@5d76b067

scala> pg.language
res6: String = Java

scala> pg.coding()
Javaを使ってコーディングします

scala> pg.language = "Ruby"
<console>:13: error: reassignment to val
       pg.language = "Ruby"
                   ^
scala> class Programmer(_language: String){
     | println("Programmerインスタンスを生成します")
     | println("language = " + _language)
     | val language = _language
     | def coding() = println(language + "を使ってコーディングします")
     | }
defined class Programmer

scala> val pg = new Programmer("PHP")
Programmerインスタンスを生成します
language = PHP
pg: Programmer = Programmer@16f7c8c1

scala> pg.language
res7: String = PHP

scala> pg.language = "Java"
<console>:13: error: reassignment to val
       pg.language = "Java"
                   ^

scala> pg.coding()
PHPを使ってコーディングします

scala> class Programmer(val language: String){
     | println("Programmerインスタンスを生成します")
     | println("language = " + language)
     | def this() = this("Scala")
     | def coding() = println(language + "を使ってコーディングします")
     | }
defined class Programmer

scala> val pg = new Programmer
Programmerインスタンスを生成します
language = Scala
pg: Programmer = Programmer@3eb25e1a

scala> val pg = new Programmer("Ruby")
Programmerインスタンスを生成します
language = Ruby
pg: Programmer = Programmer@44a664f2

scala> pg.language
res9: String = Ruby

scala> class Sample{
     | val arg1 = "this is public"
     | private val arg2 = "this is private"
     | def func1() = "this is public function"
     | private def func2() = "this is private function"
     | }
defined class Sample

scala> val sp = new Sample
sp: Sample = Sample@4c39bec8

scala> sp.arg1
res14: String = this is public

scala> sp.arg2
<console>:14: error: value arg2 in class Sample cannot be accessed in Sample
       sp.arg2
          ^

scala> sp.func1()
res16: String = this is public function

scala> sp.func2()
<console>:14: error: method func2 in class Sample cannot be accessed in Sample
       sp.func2()
          ^
scala> sys.exit

便利ですねー。