scala之 类与对象

目录

object

class

抽象类

特质 Trait

样例类,样例对象

模式匹配


object

单例的对象,里面定义的成员变量 和 方法都是静态的(static),如果要编写和运行main,必须要写在单例对象类中
伴生对象:
     当object 的名称和类的名称一致的时候。,这个对象叫着这个类的伴生对象(必须在同一个文件中)
 objectName.apply() 和 objectName() 是一样的效果

class

类的定义 class ClassName

类的主构造器(一个):定义在类的名称后面的构造器,(private val name: String, var age: Int)
类的辅助构造器(多个):定义在类体中,def this(构造参数)类的辅助构造器,在类的辅助构造器中必须先调用类的主构造器
类的成员变量
      var 对外提供了get 和 set方法
      val 对外值只提供了get方法
访问权限:
      成员变量 private[] 标识外部没法访问它get 或者 set方法
      方法        private[] 标识外部没法调用这个方法
      构造器     private[] 在外部无法访问
      类的         private[包名] 标识这个类在这个包名及其子包下可见(可访问)
      private[this] 只能在当前包下可见子包不可见(不能访问)
      伴生类和伴生对象可以互相访问私有的成员和方法。 注意:private[this]修饰的不能访问

 

抽象类

1.通过abstract关键字定义抽象类

2.抽象类中可以定义抽象方法和普通方法

3.抽象方法没有方法体{}

4.在scala中继承抽象类的话,必须使用extends关键字

特质 Trait

1.定义特质使用Trait关键字
2.特质相当于java中的Interface, 但是比Interface更强大一些,因为在trait中可以定义抽象方法,trait中也可以定义普通方法
3.如果某一个类或者对象(继承)混入了某一个特质,这个特质中有一个没有实现的方法A,还有一个带有实现方法的B,这个类或者对象必须实现这个没有实现的方法A, 可以重写方法B, 必须使用override关键字
 4.单继承,多混入,scala要求有而且仅有一个extends关键字 class LiuTeacher  extends Dance with Drive with Serializable{

样例类,样例对象

1.通过case关键字将一个类变成样例类 case class ClassName(属性),样例对象 case object ObjectName

2.case class必须显示声明一个主构造器,隐式的构造一个空的辅助构造器

 4.case class不需要new就可以创建对象

5.case class默认混入了序列化特质 ,Serializable,支持模式匹配

模式匹配

类似java中的 switch case, 但是比java中的更加强大
 val  xx = var|val match {
       case /字符串/类型/集合/Tuple/样例类/样例对象 if 守卫 => Any
 }  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值