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 ...
随机推荐
- loj6077
题解: 网上的做法好像都是容斥 那就先说一下容斥 首先问题等价于求下面这个式子的方案数 $$\sum_{i=1}^{n} ai (0<ai<i) =k$$ 直接$dp$复杂度是$nk$的, ...
- Win下必备神器之Cmder
诚言,对于开发码字者,Mac和Linux果断要比Windows更贴心;但只要折腾下,Windows下也是有不少利器的.之前就有在Windows下效率必备软件一文中对此做了下记载:其虽没oh-my-zs ...
- day16匿名函数
匿名函数,好像也就是 lambda 表达式 先来看一段函数,返回 def func(n): return n * 3 print(func(5))15 用lambda表达式写: func = lamb ...
- spark MLlib BasicStatistics 统计学基础
一, jar依赖,jsc创建. package ML.BasicStatistics; import com.google.common.collect.Lists; import org.apach ...
- Django----admin模块初识
步骤1:创建管理员用户:在Terminal输入:pythonmanage.py createsuperuser 如下图所示说明创建成功 步骤二:运行项目文件:python manage.py runs ...
- 如何在Python脚本中调用外部命令(就像在linux shell或Windows命令提示符下输入一样)
如何在Python脚本中调用外部命令(就像在linux shell或Windows命令提示符下输入一样) python标准库中的subprocess可以解决这个问题. from subprocess ...
- 【js】正则
复习字符串操作search 查找substring 获取子字符串charAt 获取某个字符split 分割字符串,获得数组 <script> var str="abcdef&qu ...
- BZOJ.5110.[CodePlus2017]Yazid 的新生舞会(线段树/树状数组/分治)
LOJ BZOJ 洛谷 又来发良心题解啦 \(Description\) 给定一个序列\(A_i\).求有多少个子区间,满足该区间众数出现次数大于区间长度的一半. \(n\leq5\times10^5 ...
- centos7.4中安装docker
#!/bin/sh # 安装docker # 在docker中安装mysql # 解决了docker容器中无法输入中文的问题 ##########################安装docker # ...
- springboot集成springsession利用redis来实现session共享
转:https://www.cnblogs.com/mengmeng89012/p/5519698.html 这次带来的是spring boot + redis 实现session共享的教程. 在sp ...