Scala入门基础3

1》类和对象

类的定义和简单使用

class Student(name:String,age:Int){
  var this.name=name
  var this.age=age
  def outPut(): Unit ={
    println("学生:"+this.name+"今年"+this.age+"岁")
  }
}
object HelloWorld
{

  def main(args: Array[String]) {
    var s=new Student("王宇",18)
    s.outPut();
  }
}

 继承和函数的重载

Scala重写一个非抽象方法,必须用override修饰符

class people(name:String,age:Int){
  var this.name=name
  var this.age=age
  def outPut(): Unit ={
    println("学生:"+this.name+"今年"+this.age+"岁")
  }
}
class Student(name:String, age:Int, boolean: Boolean)extends people(name,age){
  var shuaima=boolean
  override 
  def outPut(): Unit = {
    println("学生:" + this.name + "今年" + this.age + "岁,帅吗" + shuaima)
  }
}
object HelloWorld
{

  def main(args: Array[String]) {
    var s=new Student("王宇",18,true)
    s.outPut();

  }

}

 伴生对象

// 私有构造方法
class Marker private(val color:String) {

  println("创建" + this)
  
  override def toString(): String = "颜色标记:"+ color
  
}

// 伴生对象,与类名字相同,可以访问类的私有属性和方法
object Marker{
  
    private val markers: Map[String, Marker] = Map(
      "red" -> new Marker("red"),
      "blue" -> new Marker("blue"),
      "green" -> new Marker("green")
    )
    
    def apply(color:String) = {
      if(markers.contains(color)) markers(color) else null
    }
  
    
    def getMarker(color:String) = { 
      if(markers.contains(color)) markers(color) else null
    }
    def main(args: Array[String]) { 
        println(Marker("red"))  
        // 单例函数调用,省略了.(点)符号  
        println(Marker getMarker "blue")  
    }
}
输出
创建颜色标记:red
创建颜色标记:blue
创建颜色标记:green
颜色标记:red
颜色标记:blue

2》Scala Trait(特征)

相当于 Java 的接口,实际上它比接口还功能强大。与接口不同的是,它还可以定义属性和方法的实现。

import java.awt

trait Pen{
  def colorReturn():String
  def sizeReturn=()=>10;
}
class Paint(color1:String,size1:Int)extends Pen{
  var col=color1
  var siz=size1
  override def colorReturn(): String = col

}
object HelloWord{
  
  def main(args: Array[String]): Unit = {
    val paint=new Paint("red",12)

    println(paint.sizeReturn())
  }
}

 3》模式匹配

match相当于switch

  def main(args: Array[String]): Unit = {
  print(score(1))
}
  def score(x:Any): String =x match{
    case 1=>"数字1"
    case 2=>"数字2"
    case 3=>"数字3"
    case _=>"其他"
  }

 使用样例类

object HelloWord {

  def main(args: Array[String]): Unit = {
    val red=Pen("Red","大")
    val blue=Pen("Blue","大")
    val yellow=Pen("Yellow","小")
   for(pen<-List(red,blue,yellow)){
     pen match {
       case Pen("Red","大")=>println("使用大毛笔画Red颜色")
       case Pen("Blue","大")=>println("使用大毛笔画RBlue颜色")
       case Pen(col,size)=>println("使用"+size+"毛笔画"+col+"颜色")
     }
   }
  }
  //样例类
  case class Pen(col: String, size: String)
}
输出
使用大毛笔画Red颜色
使用大毛笔画RBlue颜色
使用小毛笔画Yellow颜色

 3》文件操作

def main(args: Array[String]): Unit = {
    val writer=new PrintWriter(new File("test.txt"))
    writer.write("王宇真帅")
    writer.close()
  }

 每次调用这个方法写入时会删除以前的数据重新写入

获取控制台用户输入

def main(args: Array[String]) {
    print("请输入账号 : " )
    val line = StdIn.readLine()
    println("你的账号是: " + line)
  }
输出
请输入账号 : 837634852
你的账号是: 837634852

 遍历输出文件

Source.fromFile("test.txt").foreach {
      print
    }

 追加写入文件

猜你喜欢

转载自www.cnblogs.com/837634902why/p/10467946.html