Scala之基础面向对象编程

Scala之基础面向对象编程


文章目录

  • Scala之基础面向对象编程
    • 写在前面
    • 包package
      • 基本语法
      • 扩展语法
    • 导入import
      • 基本语法
      • 扩展语法
    • 类class
      • 基本语法
      • 扩展语法
    • 属性
      • 基本语法
      • 扩展语法
    • 访问权限
    • 方法
    • 对象
    • 构造方法


写在前面

  • 操作系统:Windows10
  • JDK版本:jdk1.8
  • Maven版本:Maven-3.5.4
  • Scala版本:Scala-2.12.11
  • IDE工具:IntelliJ IDEA 2019.2.3

包package

基本语法

Scala中基本的package包语法和Java完全一致,例如:

package cn.whybigdata.bigdata.scala

扩展语法

Java中package包的语法比较单一,Scala对此进行扩展

  • Scala中的包和类的物理路径没有关系

  • package关键字可以嵌套声明使用

package cn
package whybigdata {
    package bigdata {
        package scala {
            object ScalaPackage {
                def test(): Unit = {
                    println("test scala......")
                }
            }
        }
    }
}
  • 同一个源码文件中子包可以直接访问父包中的内容,而无需import
package cn
package whybigdata {
    package bigdata {
        class Test {
        }
        package scala {
            object ScalaPackage {
                def test(): Unit = {
                    new Test()
                }
            }
        }
    }
}
  • Scala中package也可以看作对象,并声明属性函数
package cn
package object whybigdata {
    val name : String = "whybigdata"
    def test(): Unit = {
        println( name )
    }
}
package whybigdata {
    package bigdata {
        package scala {
            object ScalaPackage {
                def test(): Unit = {
                }
            }
        }
    }
}

导入import

基本语法

Scala中基本的import导入语法和Java完全一致,举例如下:

import java.util.List
import java.util._   

注意:Scala中使用下划线_ 代替Java中的星号

扩展语法

Java中import导入的语法比较单一,Scala对此进行扩展

  • Scala中的import语法可以在任意位置使用
object ScalaImport{
  def main(args: Array[String]): Unit = {
    import java.util.ArrayList
    new ArrayList()  
   }
}
  • Scala中可以导包,而不是导类
object ScalaImport{
  def main(args: Array[String]): Unit = {
    import java.util
    new util.ArrayList()
  }
}
  • Scala中可以在同一行中导入相同包中的多个类,简化代码
import java.util.{List, ArrayList}
  • Scala中可以屏蔽某个包中的类
import java.util._
import java.sql.{ Date=>_, Array=>_, _ }
  • Scala中可以给类起别名,简化使用

import java.util.{ArrayList=>AList}

object ScalaImport{
  def main(args: Array[String]): Unit = {
    new AList()
  }
}
  • Scala中可以使用类的绝对路径而不是相对路径

import root.java.util.ArrayList

  • 默认情况下,Scala中会导入如下包和对象
import java.lang._
import scala._
import scala.Predef._

类class

面向对象编程中类可以看成一个模板,而对象可以看成是根据模板所创建的具体事物

基本语法

  • 声明类:访问权限 class 类名 { 类主体内容 }
class User {
  // 类的主体内容
}
  • 对象:new 类名(参数列表)
new User()

扩展语法

Scala中一个源文件中可以声明多个公共类

属性

基本语法

class User {
  var name : String = _ // 类属性其实就是类变量
  var age : Int = _ // 下划线表示类的属性默认初始化
}

扩展语法

Scala中的属性其实在编译后也会生成方法

class User {
  var name : String = _
  val age : Int = 30
  private val email : String = _
  @BeanProperty var address : String = _
}

访问权限

Scala中的访问权限和Java中的访问权限类似,但是又有区别:

  • private : 私有访问权限
  • private[包名]: 包访问权限
  • protected : 受保护权限,不能同包;公共访问权限

方法

Scala中的类的方法其实就是函数,所以声明方式完全一样,但是必须通过使用对象进行调用

object ScalaMethod{
  def main(args: Array[String]): Unit = {
    val user = new User
    user.login("whybigdata", "123456")
  }
}

class User {
  def login(name:String, password:String): Boolean = {
    false
  }
}

对象

Scala中的对象和Java是类似的

  • val | var 对象名 [:类型] = new 类型()
var user : User = new User()

构造方法

和Java一样,Scala中构造对象也需要调用类的构造方法来创建。并且一个类中可以有任意多个不相同的构造方法。这些构造方法可以分为2大类:主构造函数辅助构造函数

  • 两种函数的示例:
class User() { // 主构造函数
  var username : String = _ 
  def this(name:String) { // 辅助构造函数,使用this关键字声明
    this() // 辅助构造函数应该直接或间接调用主构造函数
    username = name
  }

  def this(name:String, password:String) {
    this(name) // 构造器调用其他另外的构造器,要求被调用构造器必须提前声明
  }
}

全文结束!

相关推荐

  1. Scala基础面向对象编程

    2024-07-15 15:50:03       19 阅读
  2. Scala面向对象 Day -3

    2024-07-15 15:50:03       39 阅读
  3. scala--面向对象(2)

    2024-07-15 15:50:03       54 阅读
  4. python面向对象编程

    2024-07-15 15:50:03       30 阅读
  5. Scala编程基础4 类、对象、继承、特质

    2024-07-15 15:50:03       26 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-15 15:50:03       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-15 15:50:03       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-15 15:50:03       58 阅读
  4. Python语言-面向对象

    2024-07-15 15:50:03       69 阅读

热门阅读

  1. Linux入侵排查

    2024-07-15 15:50:03       18 阅读
  2. 短剧app系统开发

    2024-07-15 15:50:03       22 阅读
  3. Vue响应式源码解析

    2024-07-15 15:50:03       17 阅读
  4. qt 创建一个左侧边线,可以向左侧拖拽的矩形

    2024-07-15 15:50:03       23 阅读
  5. 关于vue环境变量的使用

    2024-07-15 15:50:03       13 阅读
  6. 软件测试中Bug分析的艺术:方法与实践

    2024-07-15 15:50:03       19 阅读
  7. go 的HTTP请求处理

    2024-07-15 15:50:03       16 阅读
  8. 洛谷 P1162 填涂颜色

    2024-07-15 15:50:03       23 阅读
  9. wxz196二次消谐装置的消除功能介绍

    2024-07-15 15:50:03       18 阅读