Scala超类怎么构造-创新互联
这篇文章主要讲解了“Scala超类怎么构造”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Scala超类怎么构造”吧!
创新互联是专业的细河网站建设公司,细河接单;提供成都做网站、成都网站制作,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行细河网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!扩展类
在Scala中扩展类的方式和Java一样都是使用extends关键字
可以把类声明为final,使之不能扩张
也可以把单个方法或者字段声明为final,以确保它不能被重写,注意和Java的不同,Java中final修饰的字段意味着不可变。
重写方法
在Scala中重写一个非抽象的方法必须使用override修饰符
在子类中调用超类的方法,使用super,和Java一致。
protected修饰的字段和方法
被protected修饰的字段或者方法,可以被其子类访问;
与Java不同的是,protected修饰的成员对于类所属的包是不可见的;
protected[this],访问权限仅限当前的对象
可以使用包修饰符改变protected修饰的成员的可见性
类型检查和转换
Scala | Java | |
测试某个对象是否属于给定的类 | obj.isInstanceOf[C] | obj instanceof C |
强制类型转换 | obj.asInstanceOf[C] | (C)obj |
获取对象的类信息 | classOf[C] | C.class |
超类的构造
下面代码定义了一个子类和一个调用超类构造器的主构造器
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 }}
感谢各位的阅读,以上就是“Scala超类怎么构造”的内容了,经过本文的学习后,相信大家对Scala超类怎么构造这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!
标题名称:Scala超类怎么构造-创新互联
标题链接:http://cdiso.cn/article/ccodip.html