前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >深圳大数据培训学习:继承--【千锋】

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

原创
作者头像
深圳java培训技术
修改2019-10-22 16:41:27
4930
修改2019-10-22 16:41:27
举报
文章被收录于专栏:深圳java培训深圳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     } }

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 深圳大数据培训学习:继承--【千锋】
    • 5.3.1. 扩展类
      • 5.3.2. 重写方法
        • 5.3.3.protected修饰的字段和方法
          • 5.3.3. 类型检查和转换
            • 5.3.4. 超类的构造
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档