zoukankan      html  css  js  c++  java
  • Scala面向对象详解

    Scala的包(作用域)

    package com.jh.scala 等同于 package jh package scala 等同于 package com.jh{ package scala {

    第一个包生明对当前整个文件内的包声明有效

      1,源文件的目录和包之间并没有强制的关联关系

    包对象(弥补了JVM的不足)

    包可以包含 类,对象和 trait ,但不能包含函数或变量的定义,这是Java虚拟机的局限

    package scala { }

    package object scala { }

    包可见性

    访问权限缺省时,Scala默认 public 访问权限

    var name = "Vow"

    属性为私有时,只在类的内部和伴生对象中可用

    private var name = "Vow"

    Scala 中受保护权限比Java中更严格,只能子类访问,同包无法访问

    protected var name = "Vow"

    给指定包以访问权限【可以给到com,所有都可访问】

    private【scala】val name = "Vow"

    引入(导包)

    import 语句可以出现在任何地方

    import scala.beans._   用下滑线作为通配符

    import scala.collection.mutable.{HashMap,HashSet} 采用选取器{} 

    重命名和隐藏

    如果引入的多个包中含有相同的类,那么可以将不需要的类进行重命名以便区分

    import java.uiti.{HashMap=>JavaHashMap,List}

    import scala.collection.mutable._

    var map = new HashMap()  // scala 中的HashMap

    var map1 = new JavaHashMap(); // java 中的HashMap别名

    如果某个冲突的类根本用不到,那么可以隐藏

    import java.util.{HashMap=>_,_}

    继承

    和Java一样使用extends关键字,在定义中给出子类需要而超类没有的字段和方法,或者重写超类的方法。

    如果类声明为final,他将不能被继承。如果单个方法声明为final,将不能被重写

    重写方法

    重写一个非抽象方法需要用 override 修饰符,调用超类的方法使用 super关键字

    类型检查和转换

    用 isInstanceOf 方法测试某个对象是否属于某个给定的类

    用 asInstanceOf 方法将引用转换为子类的引用

    用 classOf 获取对象的类名

    受保护的字段和方法

    protected在Scala 中,只有继承关系才可以访问,同一个包下,也不可以。

    超类的构造

    子类的辅助构造器最终都会调用主构造器

    只有子类构造器可以调用超类的构造器。辅助构造器永远都不可能直接调用超类的构造器。

    class Person(name:String){}

    class Emp(name:String)extends Person(name){ // 将子类参数传递给父类构造器

      // super(name) (X) 没有这种语法

    }

    覆写字段

    子类改写父类的字段

  • 相关阅读:
    vue hover如何触发事件?
    防止 window.open 被拦截
    input输入框change和blur事件区别
    神马?使用JS直接上传并预览粘贴板的图片?
    删除设备与驱动器中百度网盘图标
    枚举类字典代码 草稿
    中文转换成阿拉伯数字
    Java对象与类中的一个小练习
    正向代理和反向代理
    MySQL教程126-MySQL事务隔离级别
  • 原文地址:https://www.cnblogs.com/Vowzhou/p/10732020.html
Copyright © 2011-2022 走看看