scala入门学习之类的使用

时间比较紧,所以直接上代码,解释在代码中:


/**
 * @author hnyd
 */
class HelloClass {
 
}

//scala 中都是public类

class Person{       //不带构造函数函数的

  var name:String=_ //会生成getter和setter
  val age=10        //只会生成getter
 
  //添加private[this]声明的变量,只能在类的内部使用
  private[this] val gendar="male"
 
}

//这是一个主构造器
//1、定义一个主构造器后,其颞部声明的变量,会生成相应的字段
//2、类中所有的内容会执行一遍
//3、如果变量的前面没有带val或var就相当于在字段前面添加了private[this],
//只能在内部使用,不能实例化调用
class Person2(var name:String,val age:Int){
 
  println("this is a primary constructor")
 
  var gender:String=_
 
  val school=""
 
  //附属构造器
  //附属构造器的名称必须是this
  //附属构造器中必须首先调用子构造器或附属构造器
  def this(name:String,age:Int,gender:String){
    this(name,age)
    this.gender=gender
    println("this a 附属 constructor")
  }

}

//继承
//关于override的使用,不单单对方法使用,还使用用于字段
class Student(name:String,age:Int,val address:String) extends Person2(name,age){
 
  println("this is a subclass of Person2")
 
  override val school=""
 
  override def toString="override toString...."
}

object HelloClass{
 
  def main(args:Array[String]){
    
    val p=new Person  //没有构造函数可以省略"()"
    p.name="jack"
    println(p.name+":"+p.age)
    
    println()
    
    val p2=new Person2("jack",20)
    println(p2.name+":"+p2.age)
    
    println()
    
    val p2_1=new Person2("jack",23,"male")
    println(p2_1.name+":"+p2_1.gender)
    
    println()
    
    val s1=new Student("jack",23,"henan")
    println(s1.name+":"+s1.age+":"+s1.address)
    
    println(s1.toString)
    
    println()
  }
}

坚持是必须的,希望你多写多练,坚持

原文地址:https://www.cnblogs.com/YangMT/p/4787965.html