设为首页 加入收藏

TOP

7. Scala面向对象编程(中级部分)(一)
2019-08-15 00:10:59 】 浏览:227
Tags:Scala 面向 对象 编程 中级 部分

7.1 包 

  7.1.1 看一个应用场景 

      现在有两个程序员共同开发一个项目,程序员xiaoming希望定义一个类取名Dog,程序员xiaohong也想定一个类也叫Dog,两个程序员还为此吵了起来,该怎么办?

      --->使用包即可解决这个问题

  7.1.2 回顾-Java包的三大作用 

      1) 区分相同名字的类

      2) 当类很多时,可以很好的管理类

      3) 控制访问范围

  7.1.3 回顾-Java打包命令 

      -打包基本语法

        package com.c;

      -打包的本质分析

        实际上就是创建不同的文件夹来保存类文件

  7.1.4 快速入门 

      使用打包技术来解决上面的问题,不同包下Dog类

public class TestTiger {
    public static void main(String[] args) {
        //使用xm的Tiger
        com.c.scala_exercise.javapackage.xm.Tiger tiger01 = new com.c.scala_exercise.javapackage.xm.Tiger();
        //使用xh的Tiger
        com.c.scala_exercise.javapackage.xh.Tiger tiger02 = new com.c.scala_exercise.javapackage.xh.Tiger();

        System.out.println("tiger01=" + tiger01 + "tiger02=" + tiger02);
    }
}

  7.1.5 Scala包的基本介绍 

      和Java一样,Scala中管理项目可以使用包,但Scala中的包的功能更加强大,使用也相对复杂些

  7.1.6 Scala包快速入门 

      使用打包技术来解决上面的问题,不同包下Dog类

object boke_demo01 {
  def main(args: Array[String]): Unit = {
    //使用xh的Tiger
    val tiger1 = new com.c.scala_exercise.scalapackage.xh.Tiger
    //使用xm的Tiger
    val tiger2 = new com.c.scala_exercise.scalapackage.xm.Tiger

    println(tiger1 + " " + tiger2)

  }
}

  7.1.7 Scala包的特点概述 

      -基本语法

        package 包名

      -Scala包的作用(和Java一样)

        1) 区分相同名字的类

        2) 当类很多时,可以很好的管理类

        3) 控制访问范围

        4) 可以对类的功能进行扩展

      -Scala中包名和源码所在的系统文件目录结构可以不一致,但是编译后的字节码文件路径和包名会保持一致(这个工作由编译器完成)

object boke_demo01 {
  def main(args: Array[String]): Unit = {
    //使用xh的Tiger
    val tiger1 = new com.c.scala_exercise.scalapackage.xh.Tiger
    //使用xm的Tiger
    val tiger2 = new com.c.scala_exercise.scalapackage.xm.Tiger

    println(tiger1 + " " + tiger2)

  }
}

class Employee {

}

  7.1.8 包的命名 

      -命名规则:

        只能包含数字、字母、下划线、小圆点.,但是不能用梳子开头,也不要使用关键字

        demo.class.exercise  //错误,因为class是关键字

        demo.12a  //错误,因为不能以梳子开头

      -命名规范:

        一般是小写字母+小圆点一般是

        com.公司名.项目名.业务模块名 比如:com.baidu.io.model  com.baidu.io.controller

  7.1.9 Scala包注意事项和使用细节 

      1) Scala进行package打包时,可以有如下形式

//代码说明
//1. package com.boke{}  表示我们创建了包 com.boke ,在{}中
//   我们可以继续写它的子包 scala //com.boke.scala, 还可以写类,特质trait,还可以写object
//2. 即Sacla支持,在一个文件中,可以同时创建多个包,以及给各个包创建类,trait和object
package com.boke { //包 com.boke

  //  class User { // 在com.boke包下创建个 User类
  //    def sayHello(): Unit = {
  //      //想使用 com.boke.scala2包下的 Monster
  //      import com.boke.scala2.Monster
  //      val monster = new Monster()
  //    }
  //  }
  //
  //  package scala2 { // 创建包 com.boke.scala2
  //    class User { // 在com.boke.scala2 包下创建个 User类
  //   }
  //
  //    class Monster { //
  //
  //    }
  //
  //  }


  //
  //说明
  //1. 在包中直接写方法,或者定义变量,就错误==>使用包对象的技术来解决
  //2. package object scala表示创建一个包对象scala, 它是com.boke.scala这个包对应的包对象
  //3. 每一个包都可以有一个包对象
  //4. 包对象的名字需要和子包一样
  //5. 在包对象中可以定义变量,方法
  //6. 在包对象中定义的变量和方法,就可以在对应的包中使用
  //7. 在底层这个包对象会生成两个类 package.class  和 package$.class
  package object scala {
    var name = "king"

    def sayHiv(): Unit = {
      println("package object scala sayHI~")
    }
  }


  package scala { //包 com.boke.scala

    class Person { // 表示在 com.boke.scala下创建类 Person
      val name = "Nick"

      def play(message: String): Unit = {
        println(this.name + " " + message)
      }
    }

    class User {
      def testUser(): Unit = {
        println("name = " + name)
        sayHiv()
      }
    }

    object Test1 { //表示在 com.boke.scala 创建object Test1
      def main(args: Array[String]): Unit = {
首页 上一页 1 2 3 4 5 6 7 下一页 尾页 1/7/7
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇6. Scala面向对象编程(基础部分) 下一篇8. Scala面向对象编程(高级部分)

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目