scala基础19-包/包对象/引入/隐式引入

本文详细介绍了Scala语言中包和包对象的概念与使用方法。包括默认引入的包、自定义包及包对象的定义,同时展示了如何通过包对象来统一访问不同类中的公共属性和方法。
/*
 * scala中隐式引入了以下包:
 * java.lang._
 * scala._
 * Predef._
 */
package com.dt.scala.oop //没有大括号,表示作用域到整个代码块

package com.scala.spark

/*
 * 在包中可以定义包对象
 * 包中的所有类都可以访问报对象的成员和方法
 * 前提是包的名字要和报对象的名字一样
 */
package object people {
  val defaultName = "Scala"
}


package people {
  class people {
    var name = defaultName
  }
  
  class people2 {
    var name2 = defaultName
  }
}

class people3 {
  //var name3 = defaultName //这里不能访问,people3已经不再people包中
}

import java.awt.{ Color, Font } //单独引入指定类
import java.util.{ HashMap => JavaHashMap } //重命名:解决java中类和scala中的类的命名冲突
import scala.{ StringBuilder => _ } //隐藏这个类

class PackageOps {}

package spark.navigation {//支持包的嵌套
  abstract class Navigator {
    def act
  }
  
  //测试代码专门在测试的包里
  package tests {
    // 在spark.navigation.tests包里
    class NavigatorSuite
  }

  package impls {
    class Action extends Navigator {
      def act = println("Action")
    }
  }
}

package hadoop {
  package navigation {
    class Navigator
  }

  package launch {
    class Booster {
      val nav = new navigation.Navigator
    }
  }
}

object PackageOps extends App {
}


我这个是在Ubuntu运行sbt run发生的 root@Ubuntu:/home/rt/chisel-examples/hello-world# sbt run [info] welcome to sbt 1.10.11 (Ubuntu Java 21.0.6) [info] loading project definition from /home/rt/chisel-examples/hello-world/project [info] loading settings for project hello-world from build.sbt... [info] set current project to hello-world (in build file:/home/rt/chisel-examples/hello-world/) [info] compiling 1 Scala source to /home/rt/chisel-examples/hello-world/target/scala-2.12/classes ... [info] Non-compiled module 'compiler-bridge_2.12' for Scala 2.12.15. Compiling... error: bad constant pool index: 0 at pos: 48454emental 2s while compiling: <no file> during phase: globalPhase=<no phase>, enteringPhase=<some phase> library version: version 2.12.15 compiler version: version 2.12.15 reconstructed args: -bootclasspath /root/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.12.15/scala-library-2.12.15.jar -nowarn -classpath /root/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-sbt/compiler-interface/1.10.8/compiler-interface-1.10.8.jar:/root/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-sbt/util-interface/1.10.7/util-interface-1.10.7.jar:/root/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-sbt/compiler-bridge_2.12/1.10.8/compiler-bridge_2.12-1.10.8-sources.jar:/root/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-compiler/2.12.15/scala-compiler-2.12.15.jar:/root/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-reflect/2.12.15/scala-reflect-2.12.15.jar:/root/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/modules/scala-xml_2.12/1.0.6/scala-xml_2.12-1.0.6.jar:/root/.cache/coursier/v1/https/repo1.maven.org/maven2/jline/jline/2.14.6/jline-2.14.6.jar -d /tmp/sbt_bc12c207 -Xmaxwarns 0 last tree to typer: EmptyTree tree position: <unknown> tree tpe: <notype> symbol: null call site: <none> in <none> =
03-27
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值