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 ...
随机推荐
- Linux下执行Java程序报错
在linux下编译java程序,执行javac编译生成class文件时,在centos7终端输入如,javac hello.java 会提示未找到指令,但用java -verison测试环境变量 ...
- Kafka生产者发送消息的三种方式
Kafka是一种分布式的基于发布/订阅的消息系统,它的高吞吐量.灵活的offset是其它消息系统所没有的. Kafka发送消息主要有三种方式: 1.发送并忘记 2.同步发送 3.异步发送+回调函数 下 ...
- 初窥Java之六
一.二维数组 1.动态创建 数组中元素类型[] 数组名 = new 数组中元素类型[]; 例如:int[][] arr = new int[二维数组的长度][一维数组的长度]: Int[][] arr ...
- python接口测试-认识GET请求
前边用工具也实现了接口自动化,但是后来很多的时候维护成本有点高.而且灵活上还是有所欠缺的. 于是,自己开始摸索学习敲码.应该有很多不对的地方或者可以优化的望各位大神勿喷,同时欢迎各位大神评论区发表自己 ...
- 20172328 2018-2019《Java软件结构与数据结构》第六周学习总结
20172328 2018-2019<Java软件结构与数据结构>第六周学习总结 概述 Generalization 本周学习了第十章:非线性集合与数据结构--树.主要讨论了树的使用和实现 ...
- Beta(7/7)
鐵鍋燉腯鱻 项目:小鱼记账 团队成员 项目燃尽图 冲刺情况描述 站立式会议照片 各成员情况 团队成员 学号 姓名 git地址 博客地址 031602240 许郁杨 (组长) https://githu ...
- 网页布局之flex
Flex是Flexible Box的缩写,意为“弹性布局”,用来为盒状模型提供最大的灵活性.设为Flex布局以后,子元素的float.clear和vertical-align属性将失效.使用flex ...
- python MRO:C3算法
http://www.codeweblog.com/python-mro-c3%E7%AE%97%E6%B3%95/ 在 python 2.2 之后,python 实现了一个新的MRO算法:C3算法, ...
- JBPM工作流(八)——流程实例(PI)Process Instance
/** * 流程实例 * * 启动流程实例 * * 完成任务 * * 查询 * * 查询流程实例 * * 查询任务 * * 查询正在 ...
- FTP服务器匿名登录
ftp需要开通对匿名用户.本地用户.及虚拟用户的支持.并且特别对虚拟用户中的(stu.teacher.admin)分别授予不同的权限. 1.创建多层目录,然后挂载 2.配置yum源文件 3.安 ...