scala基础02

Scala基础

  1. 数据类型

  1. 变量和常量的声明
  • 定义变量或者常量的时候,也可以写上返回的类型,一般省略,如:val a:Int = 10
  • 常量不可再赋值

    /**

     * 定义变量和常量

     * 变量 : var 定义 ,可修改

     * 常量 : val 定义,不可修改

     */

    var name = "zhangsan"

    println(name)

    name ="lisi"

    println(name)

    val gender = "m"

//    gender = "m"//错误,不能给常量再赋值

 

  1. 类和对象
  • 创建类

//没有输入参数

class Person{

  val name = "zhangsan“ 

  val age = 18

  def sayName() = {

    "my name is "+ name

  }

}

//有输入参数

class Person(name:String,age:Int){

  val name = "zhangsan“ 

  val age = 18

  def sayName() = {

    "my name is "+ name

  }

}

 

//如果在参数前面加了val,这个xname在new person().xname的时候是可显示的。

//如果不加是显示的,相当于是私有的变量,一般使用的时候是不加的。

class Person(val xname:String,age:Int){

  val name = "zhangsan“ 

  val age = 18

  def sayName() = {

    "my name is "+ name

  }

}

//如果在main方法里面传入了多个参数,例如:new person(‘zhangsan’,1,'C'),这个时候是报错的,需要我们写默认的构造

class Person(val xname:String,age:Int){

  val name = "zhangsan“ 

  val age = 18

var gender='M'

  def sayName() = {

    "my name is "+ name

  }

  def this(yname:String,yage:Int,ygender:Char){
     this(yname,yage)

     this.gender = ygender

}

//Scala中当new class 时,类中除了方法不执行【除了构造方法】,其他都执行。

//所以打印的数据会有

class Person(val xname:String,age:Int){

  val name = "zhangsan“ 

  val age = 18

var gender='M'

println("====")

  def sayName() = {

    "my name is "+ name

  }

  def this(yname:String,yage:Int,ygender:Char){
     this(yname,yage)

     this.gender = ygender

}

//加了private之后就变成私有变量了

class Person{

  private val name = "zhangsan“ 

  val age = 18

  def sayName() = {

    "my name is "+ name

  }

}

//在同一个scala文件中,class名称和Object名称一样时,这个类叫做个对象的伴生类,这个对象叫做这个类的伴生对象,他们之间可以互相访问私有变量.

object 不可以传参数,如果想传参,那就写apply方法,才可以执行。

class Person{

  private val name = "zhangsan“ 

  val age = 18

  def sayName() = {

    "my name is "+ name

  }

}

object Person{

 def apply (i:Int):Unit ={

  println(i)

 

}

  def main(args:Array[String]):Unit ={

       Person(1)

   }

  }

}

class Person(xname :String , xage :Int){

  var name = Person.name

  val age = xage

  var gender = "m"

  def this(name:String,age:Int,g:String){

    this(name,age)

    gender = g

  }

 

  def sayName() = {

    "my name is "+ name

  }

 

}

 

object Person {

  val name = "zhangsanfeng"

 

  def main(args: Array[String]): Unit = {

    val person = new Person("wagnwu",10,"f")

    println(person.age);

    println(person.sayName())

    println(person.gender)

  }

}

  • 创建对象

object Lesson_Class {

   def main(args: Array[String]): Unit = {

    val person = new Person()

    println(person.age);

    println(person.sayName())

  }

}

 

注意点:

  1. 建议类名首字母大写 ,方法首字母小写,类和方法命名建议符合驼峰命名法。
  2. scala 中的object是单例对象,相当于java中的工具类,可以看成是定义静态的方法的类。object不可以传参数。另:Trait不可以传参数
  3. scala中的class类默认可以传参数,默认的传参数就是默认的构造函数。

重写构造函数的时候,必须要调用默认的构造函数。

     4、class 类属性自带getter ,setter方法。

     5、使用object时,不用new,使用class时要new ,并且new的时候,class中除了方法不执行,其他都执行。

     6、如果在同一个文件中,object对象和class类的名称相同,则这个对象就是这个类的伴生对象,这个类就是这个对象的伴生类。可以互相访问私有变量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值