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()
  }
}
目录
相关文章
|
分布式计算 Java Hadoop
Scala入门必刷的100道练习题(附答案)
Scala入门必刷的100道练习题(附答案)
1257 1
|
Java 大数据 Scala
Scala入门【运算符和流程控制】
Scala入门【运算符和流程控制】
|
Java Scala
Scala 类和对象
Scala 类和对象
287 5
|
消息中间件 分布式计算 Java
Scala语言发展历史及基本常识
Scala,由马丁·奥德斯基于2001年创造,融合了Java和JavaScript的特性,被称为“大数据的黄金语言”。它是Spark、Flink、Kafka等项目的主要开发语言,运行在JVM上,与Java高度兼容,支持面向对象和函数式编程。Scala以精简的语法和高级语言特性著称,成为大数据处理领域的首选语言之一。
|
监控 安全 Java
Scala 语言助力局域网监控电脑屏幕软件的创新
在数字化办公时代,局域网监控软件对企业和信息安全至关重要。Scala语言融合了面向对象与函数式编程,其简洁的语法和强大的类型系统为这类软件的开发提供了新机遇。利用Scala的函数式编程特性,开发者能编写更简洁、易维护的代码;结合Java的丰富类库,实现高效网络通信;Scala的并发模型还能优化多线程处理,提升监控效率。这些特点使Scala成为开发智能且高效的局域网监控软件的理想选择。
230 0
|
分布式计算 大数据 Java
Scala 入门指南:从零开始的大数据开发
Scala 入门指南:从零开始的大数据开发
|
分布式计算 大数据 Java
大数据开发语言Scala入门
大数据开发语言Scala入门
|
IDE 大数据 Java
「AIGC」大数据开发语言Scala入门
Scala,融合OOP和FP的多范式语言,在JVM上运行,常用于大数据处理,尤其与Apache Spark配合。要开始学习,安装Scala,选择IDE如IntelliJ。基础包括变量、数据类型、控制结构、函数。Scala支持类、对象、不可变数据结构、模式匹配和强大的并发工具。利用官方文档、教程、社区资源进行学习,并通过实践提升技能。
433 0
|
Scala
Scala中的类和对象:定义、创建和使用
Scala中的类和对象:定义、创建和使用
411 1
|
Java Shell API
Scala入门【变量和数据类型】
Scala入门【变量和数据类型】