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 ...
随机推荐
- [CF662C] Binary Table(FWT)
题意: https://www.cnblogs.com/cjyyb/p/9065801.html 题解:
- 继承了AppCompatActivity的全屏设置
v7下全屏设置:getSupportActionBar().hide();getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN ...
- 一起学爬虫——使用Beautiful Soup爬取网页
要想学好爬虫,必须把基础打扎实,之前发布了两篇文章,分别是使用XPATH和requests爬取网页,今天的文章是学习Beautiful Soup并通过一个例子来实现如何使用Beautiful Soup ...
- 树莓派做coolpy服务器
安装前需要了解的 1. coolpy是一个基于NodeJS的物联网平台(官网http://icoolpy.com). 注:国内物联网平台有乐联网,yeelink等,但只有coolpy是开源的. 2. ...
- 微信小程序--家庭记账本开发--03
组件.标签以及模板的使用 在一个微信小程序中,需要用到大量的组件,一些页面的设计也需要模板,在自己所学课程中,对于一些组件.标签模板的使用有了初步的了解. 1.组件 组件是数据和方法的简单封装,对于微 ...
- [PA2014]Budowa
[PA2014]Budowa 题目大意: 有A和B两名候选人.共有\(n(n\le1000)\)个人参加投票.他们之间形成了一个树结构,树上的结点有两种身份:专家(叶子结点)或领导(非叶子结点).每位 ...
- 2017-2018 Northwestern European Regional Contest (NWERC 2017)
A. Ascending Photo 贪心增广. #include<bits/stdc++.h> using namespace std; const int MAXN = 1000000 ...
- buffer格式的转换
---恢复内容开始--- 定义好一个buffer 例如: var buf = new Buffer(''nihaoya); 通过str转成base64的字符 var str =buf.toString ...
- php curl请求和获取接口数据
curl请求和获取接口数据 class ToolModel{ /** * [http 调用接口函数] * @Author GeorgeHao * @param string $url [接口地址] * ...
- NOIP-玩具谜题
题目描述 小南有一套可爱的玩具小人,它们各有不同的职业. 有一天,这些玩具小人把小南的眼镜藏了起来.小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的面朝圈外,如下图: 这时 `singer` 告 ...