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. OpenCV.用户选择

    1.Pdf.P153(书.P122) 2. // 来自:"Creating a video with OpenCV — OpenCV 2.4.13.7 documentation.html& ...

  2. Odoo13 新变化:存货核算

    Odoo13将于2019年10月发布,本次发布也包含了大量的改进,例如,对存货核算的重构. 去掉了 产品历史价格product.price.history ,增加了 stock valuation l ...

  3. grafana的metric的计算语句

    1.磁盘使用率 .other:((node_filesystem_size_bytes{fstype=~ .my: ((node_filesystem_size_bytes{fstype=~ 2.se ...

  4. redis的事物操作

  5. layer简单使用

    官方:https://www.layui.com/doc/modules/layer.html 源码:https://github.com/xiaostudy/web_sample 效果 目录结构 代 ...

  6. 删除重复信息且要保留一条的(roacle的rowid另类用法)

    由于表的主键失效了(disable),导致导入了一些主键重复的数据,想保留唯一的一条, 最后发现其实可以用rowid来实现,不知道算不算是rowid的另类用法. delete /*+ parallel ...

  7. 什么是文件存储NAS

    阿里云文件存储(Network Attached Storage,简称 NAS)是面向阿里云 ECS 实例.E-HPC 和容器服务等计算节点的文件存储服务. 定义 阿里云文件存储 NAS 是一个可共享 ...

  8. C++ Primer练习题day2

    /* 1.7略 1.8 /* 指出不合法的语句: std::cout<<"/"; std::cout<<"*/ "; std::cout ...

  9. K60工程

    使用arm-none-eabi-objcopy工具将elf文件转换为hex文件 "D:/ELF/arm-none-eabi-objcopy.exe" -O ihex "D ...

  10. [Lua]LuaAPI整理

    ref :https://blog.csdn.net/ouyangshima/article/details/43339571   LUA和C/C++的沟通桥梁——栈 Lua生来就是为了和C交互的,因 ...