专栏首页深圳java培训深圳大数据培训学习:继承--【千锋】
原创

深圳大数据培训学习:继承--【千锋】

深圳大数据培训学习:继承--【千锋】

5.3.1. 扩展类

在Scala中扩展类的方式和Java一样都是使用extends关键字

可以把类声明为final,使之不能扩张

也可以把单个方法或者字段声明为final,以确保它不能被重写,注意和Java的不同,Java中final修饰的字段意味着不可变。

5.3.2. 重写方法

在Scala中重写一个非抽象的方法必须使用override修饰符

在子类中调用超类的方法,使用super,和Java一致。

5.3.3.protected修饰的字段和方法

被protected修饰的字段或者方法,可以被其子类访问;

与Java不同的是,protected修饰的成员对于类所属的包是不可见的;

protected[this],访问权限仅限当前的对象

可以使用包修饰符改变protected修饰的成员的可见性

5.3.3. 类型检查和转换

Scala

Java

测试某个对象是否属于给定的类

obj.isInstanceOf[C]

obj instanceof C

强制类型转换

obj.asInstanceOf[C]

(C)obj

获取对象的类信息

classOf[C]

C.class

5.3.4. 超类的构造

下面代码定义了一个子类和一个调用超类构造器的主构造器

class Employ(name: String, age: Int, val Salary:Double) extends Person (name,age)

下面的代码展示类的继承,以及接口的实现等

object ClassDemo { def main(args: Array[String]) { val h = new Human println(h.byScala())     }   } //相当于Java的接口 trait Coding{ def byJava(flag : Boolean): Unit ={ if(flag)       { println("I can code by Java")       } else{ println("I can't code by Java")       }     } //未被实现的方法默认为抽象方法 def byScala(): String   } //抽象类 abstract class Animal { def run(): Int val name: String   } class Human extends Animal with Coding{ val name = "abc" //打印几次"ABC"? val t1,t2,(a, b, c) = { println("ABC")       (1,2,3)     } println(a) println(t1._1) //在Scala中重写一个非抽象方法必须用override修饰 override def byJava(flag: Boolean): Unit = { println("Coding by Java and Scala")     } def byScala(): String={ "coding by Scala"     } //在子类中重写超类的抽象方法时,不需要使用override关键字,写了也可以 def run(): Int = { 1     } }

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 深圳大数据培训学习:方法的嵌套--【千锋】

    object EmbedDemo { def add3(x:Int,y:Int,z:Int)={ def add2(x:Int,y:Int)={    ...

    深圳java培训技术
  • 深圳大数据培训:泛型--【千锋】

    //带有类型参数A的类定义 class Stack[A] { private var elements: List[A] = Nil //泛型方法 d...

    深圳java培训技术
  • 深圳Java培训学习:MyBatis Plus 介绍

    MyBatis Plus 是国内人员开发的 MyBatis 增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

    深圳java培训技术
  • Zzreal的大数据笔记-ScalaDay02

    昨天整理了一下Scala的一些基本内容,不是很全面,不过作为学习Spark的基础足够了, 如果需要系统的学习Scala,建议还是去菜鸟教程一步步的看下来会比较条...

    企鹅号小编
  • Android系统源码分析-JNI

    序言 因为在接下来的源码分析中将涉及大量的Java和Native的互相调用。当然对于我们的代码分析没有什么影响,但是,这样一个黑盒子摆在面前,对于其实现原理还...

    用户1269200
  • 又一个布局利器, CSS 伪类 :placeholder-shown

    一般我们常见placeholder伪类选择器用来修改默认样式及文案,忽然发现placeholder-shown伪类选择器,比较官方的解释是

    前端小智@大迁世界
  • Mac OS X 安装 JDK备忘

    oracle官网从jdk1.7开始才有Mac版的安装包,但有的项目必须使用jdk1.6,所以必须从其他途径安装jdk1.6了。查了下发现,要想安装jdk1.6,...

    Allen Cheng
  • Go进阶07:错误处理(一)

    在 Go 语言中,如果一个函数或者方法需要返回任何错误,通常会使用 error 接口类型作为返回类型。在标准库中,所有返回了错误信息的函数和方法使用的都是这个接...

    mojocn
  • Salesforce CPQ:让客户更满意,让销售更高效

    你和你的销售团队希望更快的赢得交易,这是你使用Salesforce的一个原因。这也是一个很好的理由花时间学习CPQ的原因,在这里你会了解Salesforce C...

    臭豆腐
  • ASP.NET Core 使用 Google 验证码(reCAPTCHA v3)代替传统验证码

    Google reCAPTCHA(v3下同) 的使用不需要“梯子”,但申请账号的时候需要!

    乔达摩@嘿

扫码关注云+社区

领取腾讯云代金券