Scala中类定义&&构造器

Scala面向对象中有这几个概念:

类、抽象类、单例对象、特质、样例类

和Java中类似点:

类通过class关键字定义
类通过new关键字创建实例
类拥有成员变量和方法
类的成员默认为public,也支持private、protected,Scala中没有public这个关键字

和Java中不一样之处:

类中无法定义静态成员变量和方法(Java中有static)
类无需明确定义构造方法,通过构造参数列表声明为类的一部分

Java中访问修饰符

ModifierClass(自己)Package(包)Subclass(子类)World(全局)
publicYYYY
protectedYYYN
defaultYYNN
privateYNNN

Scala中访问修饰符

ModifierClassCompanion(伴生类、伴生对象)SubclassPackageWorld
default(public)YYYYY
protectedYYYNN
privateYYNN
类的定义
package oop

// 不写参数默认是无参构造
class Student() {

  // 定义成员变量
  var name:String= "zhangsan"
  var age:Int = _           // 下划线意思是有个默认值0
  var gender:String = _     // String的默认类型是null
  val banji:String = "1"

  // 定义一个辅助构造器,辅助构造器名字都是this
  def this(name:String,age:Int) = {
    this()    // 调用主构造器  不调会报红   辅助构造器必须从调用其他构造器开始
    this.name = name
    this.age = age
  }

  // 辅助构造器名字都一样,但是参数列表不一样
  def this(name:String,age:Int,gender:String) = {
    this("lisi",18)    // 调用辅助构造器,并做了初始化
    this.gender = gender
  }



  // 定义成员方法   (和定义方法一样)
  def study() = {
    println("good goood study,day day up")
  }

}



object Test01{
  def main(args: Array[String]): Unit = {
    // 通过主构造器创建
    val stu1:Student = new Student()   // 创建一个实例化对象
    println("-----主构造器调用-------")
    println(stu1.name)           // 打印的都是主构造器的值
    println(stu1.gender)
    println(stu1.age)
    stu1.study()

    println("-----辅助构造器调用------")
    // 通过辅助构造器创建
    val stu2 = new Student("zhangsan",20)
    println(stu2.name)           // 打印的都是主构造器的值
    println(stu2.gender)
    println(stu2.age)
    stu2.study()

    println("---对成员变量初始值做修改----")
    // 对成员变量初始值做修改
    stu2.age = 25
    println(stu2.age)
    // 在scala中,定义完成员变量默认会生成get/set方法,不需要像java中再去写

    println(stu2.banji)   // => 1   val 修饰的不能改变

  }
}

在这里插入图片描述

主构造参数(不同写法)class Person (var name:String,var age:Int){   // n 、 a  是形式参数
/*  var name = n
  var age = a*/


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值