【Scala中的package】

这篇具有很好参考价值的文章主要介绍了【Scala中的package】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Scala中的package

package com.zishi.scala.a03.pack

/**
 * 使用打包技术来解决不同包下Cat类
 */
object Demo {

  import com.zishi._

  val cat = new abc.Cat()
  val cat2 = new deg.Cat()
}


package com.zishi.abc {
  class Cat {}
}

package com.zishi.deg {
  class Cat {}
}

/**
 * 包也可以像嵌套类那样嵌套使用(包中有包),
 * 这个在前面的第三种打包方式已经讲过了,
 * 在使用第三种方式时的好处是:程序员可以在同一个文件中,将类(class / object)、trait 创建在不同的包中,这样就非常灵活了。
 */

package com.zishi2 {
  // 在 com.zishi2包下面的类
  class User {

  }

  // 类对象就是在Monster$, 也在com.zishi2包下面
  object Monster {

  }

  package order {

    // 在 com.zishi2.order包下面的类
    class User {

    }
  }

}

/**
 * 3)作用域原则:可以直接向上访问。即: Scala中子包中直接访问父包中的内容,
 * 大括号体现作用域。(提示:Java中子包使用父包的类,需要import)。
 * 在子包和父包 类重名时,默认采用就近原则,如果希望指定使用某个类,则带上包名即可。
 */
package com.amcre {
  //这个类就是在com.amcre包下
  class User {
  }

  //这个类对象就是在Monster$ , 也在com.amcre包下
  object Monster {
  }

  class Dog {
  }
  package scala {
    //这个类就是在com.amcre.scala包下
    class User {
    }

    //这个Test 类对象
    object Test {
      def main(args: Array[String]): Unit = {
        //子类可以直接访问父类的内容
        var dog = new Dog()
        println("dog=" + dog)
        //在子包和父包 类重名时,默认采用就近原则.
        var u = new User()
        println("u=" + u)
        //在子包和父包 类重名时,如果希望指定使用某个类,则带上包路径
        var u2 = new com.amcre.User()
        println("u2=" + u2)
      }
    }
  }

}

/**
 * 父包要访问子包的内容时,需要import对应的类等
 */
package com.zishi {
  //引入在com.atguigu 包中希望使用到子包的类Tiger,因此需要引入.

  //这个类就是在com.atguigu包下
  class User {
  }
  package scala {
    //Tiger 在 com.atguigu.scala 包中
    class Tiger {}
  }
  import com.zishi.scala.Tiger
  object Test2 {
    def main(args: Array[String]): Unit = {
      //如果要在父包使用到子包的类,需要import
      val tiger = new Tiger()
      println("tiger=" + tiger)
    }
  }
}

/**
 * 5)可以在同一个.scala文件中,声明多个并列的package(建议嵌套的pakage不要超过3层)
 */
package d {

}

package a {
  package b {
    package c {
      class Person {

      }
    }

  }

}

/**
 * 6)包名可以相对也可以绝对,比如,访问BeanProperty的绝对路径是:_root_.scala.beans.BeanProperty ,
 * 在一般情况下:我们使用相对路径来引入包,只有当包名冲突时,使用绝对路径来处理。
 */
package com.abc.aaa {
  class Manager(var name: String) {
    //第一种形式
    //@BeanProperty var age: Int = _
    //第二种形式, 和第一种一样,都是相对路径引入
    //@scala.beans.BeanProperty var age: Int = _
    //第三种形式, 是绝对路径引入,可以解决包名冲突
    @_root_.scala.beans.BeanProperty var age: Int = _
  }

  object TestBean {
    def main(args: Array[String]): Unit = {
      val m = new Manager("jack")
      println("m=" + m)
    }
  }
}

文章来源地址https://www.toymoban.com/news/detail-852703.html

到了这里,关于【Scala中的package】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 大数据开发之Scala

    scala将面向对象和函数式编程结合成一种简洁的高级语言 特点 1、scala和java一样属于jvm语言,使用时都需要先编译为class字节码文件,并且scala能够直接调用java的类库 2、scala支持两种编程范式面向对象和函数式编程 3、scala语言更加简洁高效 Scala注释使用和Java完全一样。 注释

    2024年01月23日
    浏览(30)
  • 大数据技术——使用IDEA开发Scala程序

    一、使用IDEA开发WordCount程序... 3 二、实验目的... 3 三、实验要求... 3 四、实验环境... 3 五、实验步骤... 3 4.1.1启动IDEA并创建一个新项目WordCount 3 4.1.2为WordCount项目添加Scala框架支持... 7 4.1.3数据准备... 8 4.1.4设置项目目录... 9 4.1.5新建Scala代码文件... 10 4.1.6配置pom.xml文件... 12

    2024年02月09日
    浏览(31)
  • 大数据Spark SparkSession的3种创建方式 Scala语言实现

    SparkSession是Apache Spark 2.0版本引入的一个编程接口,用于与Spark进行交互。它是Spark应用程序的入口点,提供了一种方便的方式来创建DataFrame、DataSet和SQLContext等数据结构,并且可以配置各种Spark应用程序的选项。SparkSession还管理了Spark应用程序的运行环境,包括Spark集群的连接,

    2023年04月20日
    浏览(29)
  • Spark大数据分析与实战笔记(第一章 Scala语言基础-3)

    对于每一门编程语言来说,数组(Array)都是重要的数据结构之一,主要用来存储数据类型相同的元素。Scala中的数组分为定长数组和变长数组,定义定长数组,需要使用new,而定义变长数组时,则需要导包 import scala.collection.mutable.ArrayBuffer 。 数组(Array)主要用来存储

    2024年02月10日
    浏览(43)
  • Spark大数据分析与实战笔记(第一章 Scala语言基础-2)

    Spark是专为大规模数据处理而设计的快速通用的计算引擎,它是由Scala语言开发实现的,关于大数据技术,本身就是计算数据,而Scala既有面向对象组织项目工程的能力,又具备计算数据的功能,同时Spark和Scala的紧密集成,本书将采用Scala语言开发Spark程序,所以学好Scala将有助

    2024年02月11日
    浏览(44)
  • Spark大数据分析与实战笔记(第一章 Scala语言基础-1)

    Spark是专为大规模数据处理而设计的快速通用的计算引擎,它是由Scala语言开发实现的,关于大数据技术,本身就是计算数据,而Scala既有面向对象组织项目工程的能力,又具备计算数据的功能,同时Spark和Scala的紧密集成,本书将采用Scala语言开发Spark程序,所以学好Scala将有助

    2024年02月11日
    浏览(43)
  • 你知道Scala编程语言吗?Scala基础教程【建议收藏】

    作者:i阿极 作者简介:Python领域新星作者、多项比赛获奖者:博主个人首页 😊😊😊如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论📒+关注哦!👍👍👍 📜📜📜如果有小伙伴需要数据集和学习交流,文章下方有交流学习区!一起学习进步!💪 Scala是一种

    2023年04月08日
    浏览(70)
  • Scala中的Actor模型

    概念 Actor Model 是用来编写并行计算或分布式系统的高层次抽象(类似 java 中的 Thread )让程序员不必为多线程模式下共享锁而烦恼。 Actors 将状态和行为封装在一个轻量的进程/线程中,但是不和其他 Actors 分享状态,每个 Actors 有自己的世界观,当需要和其他 Actors 交互时,通

    2024年02月10日
    浏览(27)
  • Scala中的类型检查和转换,以及泛型,scala泛型的协变和逆变

    说明 (1) obj.isInstanceOf[T]:判断 obj 是不是T 类型。 (2) obj.asInstanceOf[T]:将 obj 强转成 T 类型。 (3) classOf 获取对象的类名。 案例 1.说明 (1)枚举类:需要继承 Enumeration (2)应用类:需要继承App 2. 案例 1.说明 使用 type 可以定义新的数据数据类型名称,本质上就

    2024年02月10日
    浏览(30)
  • Scala中的Either的用法

    在 Scala 中,Either 是一种表示两种可能值的数据类型。它可以用来处理函数可能返回的两种不同类型的结果,通常用于错误处理或者结果分支情况。Either 有两个子类:Left 和 Right,其中 Left 通常用于表示错误或异常情况,而 Right 用于表示正常的结果 下面是一个使用 Either 模拟

    2024年02月12日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包