Scala 面向对象编程总结

​​​抽象属性和抽象方法

基本语法

  1. 定义抽象类:abstract class Person{} //通过 abstract 关键字标记抽象类
  2. 定义抽象属性:val|var name:String //一个属性没有初始化,就是抽象属性
  3. 定义抽象方法:def hello():String //只声明而没有实现的方法,就是抽象方法

案例实操

Scala 复制代码
abstract class Person {
   val name: String 
   def hello(): Unit
}

   val name: String = "teacher" 

   def hello(): Unit = {
   println("hello teacher")
   }
}
单例对象(伴生对象)

单例对象‌:Scala 中没有静态的概念,但提供了单例对象来模拟类对象。若单例对象名与类名一致,则称为该类的伴生对象。

伴生对象语法 ‌:使用 object 关键字声明,伴生对象对应的类称为伴生类。

apply 方法 ‌:通过伴生对象的 apply 方法,可以实现不使用 new 关键字创建对象。如果想让主构造器私有,可以在 () 前加 private

案例实操

Scala 复制代码
//(1)伴生对象采用 object 关键字声明
object Person {
   var country: String = "China"
}

//(2)伴生对象对应的类称之为伴生类,伴生对象的名称应该和伴生类名一致。
class Person {
  var name: String = "bobo"
}

object Test {
   def main(args: Array[String]): Unit = {
       //(3)伴生对象中的属性和方法都可以通过伴生对象名(类名)直接调用访
问。
       println(Person.country)
   }
}
特质

**特质(Trait)**‌:Scala 中用特质来代替接口的概念,一个类可以混入(mixin)多个特质。

特质声明 ‌:使用 trait 关键字声明,特质中可以包含抽象方法和具体方法。

特质基本语法 ‌:一个类继承特质时使用 extends 关键字,如果同时继承多个特质或父类,使用 with 关键字连接。

动态混入‌:创建对象时混入特质,而无需使类混入该特质。

特质叠加‌:解决多个混入特质中的方法冲突问题,Scala 采用了特质叠加的策略。

类型检查和转换

类型检查 ‌:使用 isInstanceOf[T] 判断对象是否为某个类型,使用 asInstanceOf[T] 将对象强制转换为某个类型。

classOf‌:获取对象的类名。

案例实操‌

Scala 复制代码
trait PersonTrait {

   // 声明属性
   var name:String = _

  // 声明方法
  def eat():Unit={

  }

  // 抽象属性
  var age:Int

  // 抽象方法
  def say():Unit
}
定义新类型

type 关键字 ‌:使用 type 关键字可以定义新的数据类型名称,本质上就是类型的一个别名。

Scala 复制代码
object Test {

   def main(args: Array[String]): Unit = 
   
       { type S=String
       var v:S="abc"
       def test():S="xyz"
   }
}
相关推荐
what丶k2 小时前
深度解析:以Kafka为例,消息队列消费幂等性的实现方案与生产实践
java·数据结构·kafka
爱敲代码的TOM4 小时前
基础算法技巧总结2(算法技巧零碎点,基础数据结构,数论模板)
数据结构·算法
惊讶的猫4 小时前
InnoDB选用B+树作为索引的原因
数据结构·b树
历程里程碑4 小时前
子串-----和为 K 的子数组
java·数据结构·c++·python·算法·leetcode·tornado
liu****4 小时前
Qt进阶实战:事件处理、文件操作、多线程与网络编程全解析
开发语言·网络·数据结构·c++·qt
寄存器漫游者4 小时前
数据结构 二叉树核心概念与特性
数据结构·算法
皮皮哎哟5 小时前
数据结构:从队列到二叉树基础解析
c语言·数据结构·算法·二叉树·队列
一匹电信狗5 小时前
【高阶数据结构】并查集
c语言·数据结构·c++·算法·leetcode·排序算法·visual studio
Hello World . .5 小时前
数据结构:二叉树(Binary tree)
c语言·开发语言·数据结构·vim
DeeplyMind6 小时前
少儿科技启蒙教材:《数据结构启蒙》
数据结构·计算机科学·少儿科技读物·蓝桥杯青少组