zoukankan      html  css  js  c++  java
  • scala(三)

    面向对象编程

    1.基础面向对象编程

    1.1 包

    1. 可以让源码文件中多次使用package关键字
    2. 源码物理路径和包名没有关系,就算报名不对,一样可以执行
    3. 明确包的作用域,可以在package关键字的后面增加大括号
    4. 同一个源码中,子包中可以直接访问父包中的内容
    5. scala可以将包当成对象来用,可以直接声明属性和方法
    

    1.2 import

    1. 星号在scala中有特殊用于,所以不能使用在import语法中,需要采用特殊符号:下划线

    import java.util._
    

    2. import关键字可以在任何地方使用

    import java.util.Date
    new Date()
    导入Date时容易造成歧义
    

    3. 可以在一行中导入同一个包中多个类并且可以给类起别名

    import java.util.{ArrayList, List, LinkedList}
    new ArrayList()
    import java.util.{HashMap=>JavaHashMap}
    println(new JavaHashMap())
    

    4. 导包,而不是导类

    import java.util
    new util.ArrayList()
    
    

    5.Scala中可以屏蔽某个包中的类

    import java.util._
    import java.sql.{Date=>_, _}   //java.sql包中屏蔽Date日期类
    new Date()
    

    6. scala中导入类的操作,是以相对路径(当前包路径)的方式导入的。如果想要使用绝对路径的方式,那么需要增加特殊操作:root

    new _root_.java.util.HashMap()
    
    

    1.3 类

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

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

    1.3 属性

    所谓的属性,其实就是类中的变量
    在编译时,编译器会将变量编译为类的(私有的)属性,同时提供了属性对应的set,get方法
    val test = new Test()
    给类的属性赋值,等同于调用对象属性的set方法
    test.name = "lisi"
    访问类的属性时,等同于调用对象属性的get方法
    println(test.name)
    使用 val声明的类的变量,取值不能修改
    val声明的属性,在编译时,会给属性添加final关键字,编译器不会提供属性的set方法
    test.age = 20
    scala中变量必须显示地初始化
    如果希望类的属性和java一样可以由系统进行初始化,而是手动赋值,可以采用特殊符号:下划线
    
    java bean规范
    反射一般用于架构设计,而架构设计的目的就是通用化
    scala中给属性提供的set,get方法不遵循bean规范
    sql => cols => [id ,name, age] => getId, getName, getAge
       class Test {
            // 声明属性
            // private String name = "zhangsan";
            // private final int age = 30;
            private var name : String = "zhangsan"
            val age : Int = 30
            @BeanProperty var email : String = _
        }
    添加@BeanProperty之后,就符合Bean规范了,然后就可以使用set/get方法了 
    

    1.3 访问权限

    java :
              1. private    => 本类
              2. (default)  => 本类,本包
              3  protected  => 本类,本包,子类
              4. public     => 任意
     scala :
              1. private       => 同类
              2. private[包名]  => 同包,包私有  
              3. protected     => 受保护的, 同类,子类,没有同包
              4. (default) => 什么都不写就是公共的。没有public关键字
    

    1.4 方法

    动态绑定  只是针对成员方法来说,成员属性还有静态方法不满足动态绑定
    

    2.高阶面向对象编程

  • 相关阅读:
    获取服务结合随机算法
    服务发现
    使用第三方库来支持平滑重启
    简易配置中心Confd入手
    8、SQL基础整理(约束)
    7、SQL基础整理(子查询)
    6、SQL基础整理(日期时间数据类型,转换函数)
    5、SQL基础整理(字符串函数)
    4、SQL基础整理(规范函数)
    3、SQL基础整理(分组)
  • 原文地址:https://www.cnblogs.com/xiao-bu/p/14797460.html
Copyright © 2011-2022 走看看