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. Opengl_入门学习分享和记录_03_渲染管线(三)借助顶点数组对象VAO提高绑定属性效率

    目前我们已经知道了,如果想要顶点着色器解释理解我们的输入数据,就必须要按照以下繁琐的步骤:第一步:将输入的数据复制一份到缓冲区,供OpenGL使用.而这块新出现的区域由VBO管理和表示.(若有多个输入 ...

  2. OpenGL(5)——变换

    学习三种变换:Scaling, Rotation和Translation. 上学期修了Kobbelt教授(男神!)的图形学基础课,这部分内容已经接触过. 添加GLM库,直接给出齐次坐标系下的变换矩阵和 ...

  3. Leetcode 69. Sqrt(x)及其扩展(有/无精度、二分法、牛顿法)详解

    Leetcode 69. Sqrt(x) Easy https://leetcode.com/problems/sqrtx/ Implement int sqrt(int x). Compute an ...

  4. kubernetes资源调度

    kubernetes默认情况下创建pod调度是由kubernetes scheduler来管理的,但显然有时候还是需要人为介入.根据目前的kubernetes版本来说,有两种自定义资源调度的方式:No ...

  5. Java.lang 包 util 包等各个包详解

    java.lang 该包提供了 Java 编程的基础类,例如 Object.Math.String.StringBuffer.System.Thread 等,不使用该包就很难编写 Java 代码了. ...

  6. IOI 2005/bzoj 1812:riv 河流

    Description 几乎整个Byteland王国都被森林和河流所覆盖.小点的河汇聚到一起,形成了稍大点的河.就这样,所有的河水都汇聚并流进了一条大河,最后这条大河流进了大海.这条大河的入海口处有一 ...

  7. .net操作数据库

    1. 自动生化曾的一些查询 可以自定义查询语句 2.自定义查询过程调用 USE [mydb] GO /****** Object: StoredProcedure [dbo].[procLogin] ...

  8. 【剑指OFFER】链表中倒数第k个结点

    [问题描述] 输入一个链表,输出该链表中倒数第k个结点. 时间限制:1秒 空间限制:32768K [AC代码] p先走k步,q再走,这样p和q的距离就是k了,等p走到尽头,那么q自然就到了倒数第k个位 ...

  9. 洛谷P2659 美丽的序列 单调栈模板

    P2659 美丽的序列 题目链接 https://www.luogu.org/problemnew/show/P2659 题目描述 为了研究这个序列的美丽程度,GD定义了一个序列的"美丽度& ...

  10. 怎样使当前cookie只有在加密协议https环境下才能将它发送到服务器

    使用 Secure 属性. 注意, 这个属性基本是"自动"的, 也就是说, 如果当前网页是https请求的, 那里面的各种HTTP请求的cookie都会自定加上这个属性, 如果当前 ...