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"
   }
}
相关推荐
阳洞洞4 小时前
leetcode 24. 两两交换链表中的节点
数据结构·leetcode·链表
zhangxueyi6 小时前
Java实现堆排序算法
java·数据结构·算法
Non importa7 小时前
【初阶数据结构】树——二叉树——堆(中)
java·c语言·数据结构·学习·算法
代码程序猿RIP7 小时前
【C语言干货】野指针
c语言·开发语言·数据结构·c++·算法
士别三日&&当刮目相看7 小时前
数据结构*队列
数据结构
阿沁QWQ8 小时前
哈希表的设计
数据结构·散列表
triticale10 小时前
【数据结构】求有向图强连通分量的方法
数据结构·图论
zhangxueyi10 小时前
Java实现归并排序算法
java·数据结构·算法
Bob999810 小时前
基于晶晨S905L3B单网线盒子的Armbian 或openwrt应用
java·javascript·网络·数据结构·c++·python·eclipse
两点王爷11 小时前
Java 中的数据结构--简单汇总
java·开发语言·数据结构