Scala语言入门二(对象)

简介: 讲述Scala中的面向对象相关知识点

讲述Scala中的面向对象相关知识点

一、特征

  • 封装:属性和方法封装在类中
  • 继承:父类和子类的一个关系
  • 多态:父类引用指向子类对象

二、类的定义和使用

类是对象的抽象,而对象是类的具体实例。类是抽象的,不占用内存,而对象是具体的,占用存储空间

/**
 * @author Gjing
 **/
class Person {
  // 定义属性,Scala会自动帮var类型的属性生成get、set,val类型的属性生成get
  var name = ""
  val age = 10
  // 可通过下划线作为一个占位符,使用占位符时就不允许使用val了
  var idCard: String = _

  def eat(): Unit = {

    println(name + "吃饭。。。")
  }
}

object Test {

  def main(args: Array[String]): Unit = {
    val person = new Person()
    person.name = "张三"
    person.idCard = "1234"
    person.eat()
    println(person.idCard)
  }
}

三、主构造器与附属构造器

/**
 * @author Gjing
 **/
class Men(name: String, age: Int) {
  // 定义属性
  var userName: String = name
  var userAge: Int = age
  var idCard: String = ""

  // 附属构造器
  def this(name: String, age: Int, idCard: String) {
    this(name, age)
    this.idCard = idCard
  }
}

四、继承

/**
 * @author Gjing
 **/
class Son(name: String, age: Int, val city: String) extends Men(name, age) {

}

object Test2 {
  def main(args: Array[String]): Unit = {
    val son = new Son("张三", 11, "厦门")
    println(son.city)
    println(son.userAge)
    println(son.userName)
  }
}

五、重写

重写一个非抽象方法必须使用override修饰符;在子类中重写超类的抽象方法时,你不需要使用override关键字

/**
 * @author Gjing
 **/
class Son(name: String, age: Int, val city: String) extends Men(name, age) {
  override def toString: String = s"Son($name,$age,$city)"
}

六、抽象类

/**
 * @author Gjing
 **/
abstract class Food {
  def name():Unit
}

class Apple extends Food {
  def name(): Unit = {
    print("Apple")
  }
}

七、伴生类和伴生对象

如果有一个class和一个同名的object,那么就称这个object是class的伴生对象,class是object的伴生类

/**
 * @author Gjing
 **/
class ApplyTest {
  def apply(): Unit = {
    println("Executor class apply...")
  }
}

object ApplyTest {
  // 最佳实践,在object的apply方法去new class
  def apply(): ApplyTest = {
    println("Executor object apply...")
    new ApplyTest()
  }
}

object Test3 {
  def main(args: Array[String]): Unit = {
    // 直接通过类名加括号  是调用object中的apply方法
    val test = ApplyTest()
    // 对象加括号,是调用class中的apply方法
    test()
  }
}
目录
相关文章
|
6月前
|
分布式计算 Java Hadoop
Scala入门必刷的100道练习题(附答案)
Scala入门必刷的100道练习题(附答案)
720 1
|
6月前
|
Java 大数据 Scala
Scala入门【运算符和流程控制】
Scala入门【运算符和流程控制】
|
3月前
|
监控 安全 Java
Scala 语言助力局域网监控电脑屏幕软件的创新
在数字化办公时代,局域网监控软件对企业和信息安全至关重要。Scala语言融合了面向对象与函数式编程,其简洁的语法和强大的类型系统为这类软件的开发提供了新机遇。利用Scala的函数式编程特性,开发者能编写更简洁、易维护的代码;结合Java的丰富类库,实现高效网络通信;Scala的并发模型还能优化多线程处理,提升监控效率。这些特点使Scala成为开发智能且高效的局域网监控软件的理想选择。
23 0
|
3月前
|
分布式计算 大数据 Java
Scala 入门指南:从零开始的大数据开发
Scala 入门指南:从零开始的大数据开发
|
4月前
|
分布式计算 大数据 Java
大数据开发语言Scala入门
大数据开发语言Scala入门
|
4月前
|
IDE 大数据 Java
「AIGC」大数据开发语言Scala入门
Scala,融合OOP和FP的多范式语言,在JVM上运行,常用于大数据处理,尤其与Apache Spark配合。要开始学习,安装Scala,选择IDE如IntelliJ。基础包括变量、数据类型、控制结构、函数。Scala支持类、对象、不可变数据结构、模式匹配和强大的并发工具。利用官方文档、教程、社区资源进行学习,并通过实践提升技能。
64 0
|
6月前
|
Scala
Scala中的类和对象:定义、创建和使用
Scala中的类和对象:定义、创建和使用
159 1
|
6月前
|
Java Shell API
Scala入门【变量和数据类型】
Scala入门【变量和数据类型】
|
Scala
164 Scala 对象
164 Scala 对象
29 0
|
安全 Java 编译器
Scala语言入门:初学者的基础语法指南
作为一种在Java虚拟机(JVM)上运行的静态类型编程语言,Scala结合了面向对象和函数式编程的特性,使它既有强大的表达力又具备优秀的型态控制
92 0