Scala面向对象详解
Scala的包(作用域)
package com.jh.scala 等同于 package jh \n 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) 没有这种语法
}
覆写字段
子类改写父类的字段
Scala面向对象详解的更多相关文章
- Java面向对象详解
Java面向对象详解 前言:接触项目开发也有很长一段时间了,最近开始萌发出想回过头来写写以前学 过的基础知识的想法.一是原来刚开始学习接触编程,一个人跌跌撞撞摸索着往前走,初学的时候很多东西理解的也懵 ...
- Scala 入门详解
Scala 入门详解 基本语法 Scala 与 Java 的最大区别是:Scala 语句末尾的分号 ; 是可选的 Scala 程序是对象的集合,通过调用彼此的方法来实现消息传递.类,对象,方法,实例变 ...
- JS 面向对象详解
面向对象详解1 OO1.html <!DOCTYPE html> <html> <head> <meta charset="utf-8" ...
- java之面向对象详解
#############java面向对象详解#############1.面向对象基本概念2.类与对象3.类和对象的定义格式4.对象与内存分析5.封装性6.构造方法7.this关键字8.值传递与引用 ...
- php开发面试题---php面向对象详解(对象的主要三个特性)
php开发面试题---php面向对象详解(对象的主要三个特性) 一.总结 一句话总结: 对象的行为:可以对 对象施加那些操作,开灯,关灯就是行为. 对象的形态:当施加那些方法是对象如何响应,颜色,尺寸 ...
- C#基础-面向对象详解
面向对象详解 一.什么是面向对象 1>面向对象是一种程序设计思想 2>面向过程和面向对象是什么? 例如要把大象放冰箱怎么做? 面向过程:打开冰箱门->把大象扔进去->关上冰箱门 ...
- scala 模式匹配详解 3 模式匹配的核心功能是解构
http://www.artima.com/scalazine/articles/pattern_matching.html这篇文章是odersky谈scala中的模式匹配的一段对话,我做了部分片段翻 ...
- scala 模式匹配详解 2 scala里是怎么实现的?
在这篇martin和另外两位模式匹配领域专家的论文里说了模式匹配的几种实现方式,以及scala是选择哪种方式来实现的.http://lampwww.epfl.ch/~emir/written/Matc ...
- Spark入门到精通--(第二节)Scala编程详解基础语法
Scala是什么? Scala是以实现scaleable language为初衷设计出来的一门语言.官方中,称它是object-oriented language和functional languag ...
随机推荐
- 业务线--node中间层做一个透传的项目
1,node中间层总结 1,ejs引入vue的js,路由层(直接透传,自定义行的),比较浅层的一层 中间件的引入 ? ) { // 与rd约定,接口成功返回code===0,其余为失败 console ...
- MyBatis入门(二)接口式编程
在 MyBatis入门(一) 的基础之上编写接口 将接口和Mapper文件进行绑定,会为接口创建一个代理对象,代理对象去执行增删改查 (1)编写接口 public interface EmpDao ...
- 关于在虚拟机上安装ubuntu输入不了中文的问题
打开终端后,无法输入中文,按照网络上的教程 1.安装语言包 System Settings–>Language Support–>Install/Remove Languages 选中ch ...
- TypeError: 'module' object is not callable
pkuseg.py 内容如下: import pkusegseg = pkuseg.pkuseg()text = seg.cut('我爱北京天安门')print(text) 原因是py文件名于包名一样 ...
- 在区块链侧链上进行Dapp技术开发
我在白皮书里提到过,asch使用的是不同于以太坊和比特币的侧链架构,dapp是运行在侧链上的,每套侧链对应一个dapp. 侧链的独立性 侧链架构的好处是代码和数据独立,不增加主链的负担,避免数据过度膨 ...
- Design Principle, Design Patterns And Refactoring
https://refactoring.guru/smells/feature-envy https://stackoverflow.com/questions/1242994/effective-c ...
- LeetCode 96 - 不同的二叉搜索树 - [DP]
假定 $f[n]$ 表示有 $n$ 个节点的二叉树,有多少种不同结构. 因此 $f[n] = \sum_{i=0}^{n-1} (f[i] \times f[n-1-i])$,选一个节点作为根节点,那 ...
- 在多个平台如何安装Python
最近的一个项目,架构师米洛需要用的mqtt,服务器开发的时候,竟然用的python脚本.运行python就需要安装开发环境,好吧,百度一下就知道了大神廖雪峰.以下部分测试通过,转载记录如下. 因为Py ...
- 第二次C语言实验
Part1: printf(),scanf()函数的用法 /* C语言程序设计教程学习指导>p119 实验内容(2) 这是一个格式化输入输出函数及格式符使用练习 找出两处错误,修改并运行程序 为 ...
- ReactJS antd 环境中项目上传图片后压缩(lrz的使用)
lrz说明 ( github地址 :https://github.com/think2011/localResizeIMG ) 用于:在客户端压缩好要上传的图片可以节省带宽更快的发送给后端,特别适合在 ...