Scala快速入门(四)——继承、接口

一、继承

1.继承的概念:省略

2.模板:

class Person(n:String,a:Int) {
var name:String=n
var age:Int=a
def showInfo():Unit={
println("学生信息如下")
println("名字:"+name)
println("年龄:"+age)
}
}
class Student(n:String,a:Int) extends Person(n,a){
def study():Unit={
println(this.name+". Im learning scala. ")
}
}

3.方法的重写

直接在方法之前用override进行修饰

案例:

class OverRideTest {
def print(): Unit ={
println("print")
}
}
class ExtendOver extends OverRideTest {
override def print(): Unit = {
println("aaa")
}
}
object Over{
def main(args: Array[String]): Unit = {
val ex=new ExtendOver
ex.print()
}
}

二、关于类和强制转换

1.获取Class对象

Java中,获取String的Class对象
Class clazz=String.class
Scala中
val clazz=classOf[String]

2.关于obj.isInstanceOf[T]类似Java中obj instanceof T

println("".isInstanceOf[String])

3.关于强制转换obj.asInstanceOf[T]类似Java中的(T)obj

println(1.0.asInstanceOf[Int])

三、抽象类

抽象类中有抽象字段也有普通字段,抽象类中只有抽象方法,下面是一个案例

abstract class Animal{
var name:String
var age:Int
def toString()
}

类的实现

class Dog extends Animal{
override var name: String = (){
println("")
}
override var age: Int = _
}

四、匿名子类

假设只会在本类使用到这个类的方法,那么我们可以使用匿名子类功能

val animal=new Animal(){
var name:String=_
var age:Int=_
override def toString(): Unit ={
println("prprpr")
}
}

五、接口

trait为接口,接口实例

trait talk{
def say(): Unit ={
println("say")
}
} trait loud{
def hey(): Unit ={
println("hey")
}
} class Test extends loud with talk{
def test: Unit ={
println("test")
}
}
object run{
def main(args: Array[String]): Unit = {
val t=new Test
t.hey
t.say
t.test
}
}

六、case class

class  Dog(name:String,age:Int){}

object run{
def main(args: Array[String]): Unit = {
val hashiqi=new Dog("hashiqi",1);
val hashiqi2=new Dog("hashiqi",1);
println(hashiqi==hashiqi2)//false
println(hashiqi.equals(hashiqi2))//false
}
} 把class改成case class,那么比较都为true

七、迭代器

object run{
def main(args: Array[String]): Unit = {
val tup:(Double,Int,String,Boolean,Char)=(1.0,88,"abc",false,'a')
val iter:Iterator[Any] = tup.productIterator
val res=iter.map((x)=>{
x match {
case o:Int=> println(s"${o+1}")
case "abc"=> println("99")
case _ => println("??")//相当于default
}
});
while(res.hasNext) res.next()
}
}

八、偏函数

限定传入值进行分类处理

object run{
def main(args: Array[String]): Unit = {
def xxx:PartialFunction[Any,String]={
case "Hi" => "hello"
case x:Int=> s"$x.. is int"
case _ => "none"
} println(xxx(444))
}
}

九、隐式转换

object run{
def main(args: Array[String]): Unit = {
implicit val a="aaa"
def aaa(implicit name:String):Unit={
println(name)
}
aaa//隐式吧上面的变量传进来
}
}

Scala快速入门(四)——继承、接口的更多相关文章

  1. Scala快速入门到精通 视频教程 百度云网盘下载地址

    Scala快速入门到精通  视频教程 百度云网盘下载地址 Scala快速入门到精通 下载地址链接:https://pan.baidu.com/s/1bqGIKyF 密码:ojwd

  2. scala快速入门之文档注释

    scala快速入门之文档注释 1.在项目栏的目录树中找到该源码,右击点击Show in Explorer, 即可找到该源码的本地路径,在路径中输入cmd 2.执行scaladoc -d  生成文档注释 ...

  3. Scala快速入门 - 基础语法篇

    本篇文章首发于头条号Scala快速入门 - 基础语法篇,欢迎关注我的头条号和微信公众号"大数据技术和人工智能"(微信搜索bigdata_ai_tech)获取更多干货,也欢迎关注我的 ...

  4. AndroidStudio快速入门四:打造你的开发工具,settings必备

    http://blog.csdn.net/jf_1994/article/details/50085825 前言:这里是使用AS的基本设置,适合新入手的朋友阅读,将这里介绍的设置完基本使用无忧啦. 1 ...

  5. Spark(七) -- Scala快速入门

    Scala作为Spark的开发语言,想要成为Spark高手,精通Scala是必须要走的一条路 然后一门语言并不是你想精通就能够精通的,更何况是Scala这种面向对象又面向函数的编程语言,个人觉得其学习 ...

  6. spark之scala快速入门

    scala和java都是在jvm之上的语言,相对来讲,scala热度比较低,其实并不是一个特别好的语言选择. 原因倒不是因为scala本身的缺点,而是使用人群不够多,论坛和社区不够活跃.这就跟社交软件 ...

  7. mybatis快速入门(四)

    mybatis动态标签<where><if><foreach>以及sql片段 1.创建一个包装类UserQueryVo.java package cn.my.myb ...

  8. Scala 快速入门

     Scalable 编程语言 纯正的的面向对象语言 函数式编程语言 无缝的java互操作 scala之父 Martin Odersky 1. 函数式编程 函数式编程(functional progr ...

  9. Spark记录-scala快速入门

    1.hello world程序 object HelloWorld { def main(args: Array[String]) { println("Hello,World!" ...

随机推荐

  1. 安装ELectron失败解决方案

    npm安装Electron解决方案 Electron使用npm安装时,因为是国外的镜像源,所以速度会非常慢.而使用cnpm如下命令进行安装时,又会出现安装失败的问题: npm install elec ...

  2. Mac PyCharm2019激活方法

    此教程支持最新2019.2版本Pycharm及其他软件 此教程实时更新,请放心使用:如果有新版本出现猪哥都会第一时间尝试激活: pycharm官网下载地址:http://www.jetbrains.c ...

  3. spring中的BeanDefinitionRegistryPostProcessor

    spring中的BeanDefinitionRegistryPostProcessor是BeanFactoryPostProcessor的子接口,BeanFactoryPostProcessor的作用 ...

  4. 解决java.lang.SecurityException: Invalid signature file digest for Manifest main attributes

    解决java.lang.SecurityException: Invalid signature file digest for Manifest main attributes 当项目依赖其他jar ...

  5. uva11624 Fire! (bfs预处理)

    题目链接:https://vjudge.net/problem/UVA-11624 题意:给一个1000×1000的矩阵,有几个着火点和Joe,着火点和Joe每个单位时间均移动一个单位,求Joe逃出的 ...

  6. [Agc028B]Removing Blocks_排列组合

    Removing Blocks 题目链接:https://atcoder.jp/contests/agc028/tasks/agc028_b 数据范围:略. 题解: 这种问题的第一步很套路,就是对于每 ...

  7. Vue代码分割懒加载的实现方法

    什么是懒加载 懒加载也叫延迟加载,即在需要的时候进行加载,随用随载. 为什么需要懒加载 在单页应用中,如果没有应用懒加载,运用webpack打包后的文件将会异常的大,造成进入首页时,需要加载的内容过多 ...

  8. HTTP协议的简单了解

    1. 用于服务端和客户端通信 客户端发送请求,服务端提供资源: 通过URI定位资源. 2. 通过请求和响应交换进行通信 客户端发送请求,服务端响应请求并返回数据: 请求报文:请求方法.URI.协议版本 ...

  9. JAVA开发者大会:拍拍贷MQ系统原理与应用

    --喜欢记得关注我哟[shoshana]-- 前记: 5月12号参加了JAVA开发者大会,就<拍拍贷消息系统原理及应用> 作者:李乘胜老师 关于PMQ的分享整理一下笔记以及笔记的思考 和复 ...

  10. codeforces 1244E Minimizing Difference (贪心)

    (点击此处查看原题) 题意分析 给出n个数,a1,a2...an,现在可以进行最多k次操作,每次操纵可以使得任意一个数自增或者自减,问经过最多k次操作后,n个数中的最大值-最小值最小为多少? 解题思路 ...