标签:FuClass obj name 子类 多态 34 面向对象 ZiClass id
多态
* 概念
* 一种数据类型,具有多种形态,在运行时判定它属于哪一种数据类型(动态绑定)
* 语法
* FuClass obj = new ZiClass()
* 用父类(超类)接收子类对象,调用时会优先调用子类的实现(属性&方法)
* 当子类没有重写时,则调用父类的实现
* 无法调用子类的特有实现(子类有而父类没有)
* 动态绑定
* java只有方法的动态绑定,scala中属性和方法都是动态绑定
* 示例
* java FuClass obj = new ZiClass()
* obj.id & obj.name 为父类的id和name
* obj.方法 为子类的方法
* scala FuClass obj = new ZiClass()
* obj.id & obj.name 为子类的id和name
* obj.方法 为子类的方法
* 重写
* java中只能重写方法
* scala可以重写方法和属性
*
* */
/** * @author gaocun * @create 2021-10-23 11:21 PM */ object 多态_08 { /* * 多态 * 概念 * 一种数据类型,具有多种形态,在运行时判定它属于哪一种数据类型(动态绑定) * 语法 * FuClass obj = new ZiClass() * 用父类(超类)接收子类对象,调用时会优先调用子类的实现(属性&方法) * 当子类没有重写时,则调用父类的实现 * 无法调用子类的特有实现(子类有而父类没有) * 动态绑定 * java只有方法的动态绑定,scala中属性和方法都是动态绑定 * 示例 * java FuClass obj = new ZiClass() * obj.id & obj.name 为父类的id和name * obj.方法 为子类的方法 * scala FuClass obj = new ZiClass() * obj.id & obj.name 为子类的id和name * obj.方法 为子类的方法 * 重写 * java中只能重新方法 * scala可以重新方法和属性 * * */ } package Outer { class FuClass() { var id = 99 var name = "FuClass" // 辅助构造器 def this(id: Int, name: String) = { this() // 调用主助构造器 this.id = id this.name = name println("FuClass - 辅助构造器 调用") } def show = println("FuClass 的show方法") println("FuClass - 主构造器调用") } class ZiClass() extends FuClass { //重写属性 override var id: Int = 88 name = "ZiClass" def fun = println("ZiClass - 特有方法") //重写方法 override def show: Unit = println("ZiClass - 重写show方法") println("ZiClass - 主构造器调用") } // 测试对象 object testpoly { def main(args: Array[String]): Unit = { val obj: FuClass = new ZiClass() println(obj.id) println(obj.name) } } }
标签:FuClass,obj,name,子类,多态,34,面向对象,ZiClass,id 来源: https://www.cnblogs.com/bajiaotai/p/15450257.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。