组合与继承之重写方法和字段

news/2024/7/3 1:35:25

为什么80%的码农都做不了架构师?>>>   hot3.png

接上篇blog,scala里的字段和方法属于相同的命名空间,这让字段可以重写无参数方法。例如,你可以通过改变ArrayElement类中contents的实现将其从一个方法变为一个字段,而无需修改类Element中contents的的抽象方法定义,如例:

abstract class Elements {def contents: Array[String]
}
class ArrayElement(conts: Array[String]) extends Elements {val contents: Array[String] = conts
}object ArrayElement {def main(args: Array[String]): Unit = {val array = new ArrayElement(Array("dddaaa", "dddww"))println(array.contents.length)}
}

这个版本的ArrayElement中的contents字段(用val定义)为Element类中的无参数方法contents(用def定义)提供了非常好的实现。

另一方法,scala里禁止在同一个类里用同样的名称定义字段和方法。尽管Java允许这样做。示例,这在scala类将不能通过编译:

class T2 {private var f = 0def f = 1    //不能编译通过,因为字段和方法重名
}

Java为定义准备了四个命名空间(分别是字段,方法,类型和包)相对,一般来说,scala仅有两个命名空间

  • 值(字段,方法,包还有单例对象)

  • 类型(类和特质名)

scala把字段和方法放进同一个命名空间的理由很明确,因为这样你就可以实现使用val重写无参数方法这种你在Java里做不到的事情。

转载于:https://my.oschina.net/fhd/blog/493849


http://lihuaxi.xjx100.cn/news/244571.html

相关文章

这些资源网站为什么能获得5万知乎大佬推荐,而我错失了什么吗?

现在很多朋友可能只要是一听到资源网站,想必就会好奇是什么网站,用用看是不是由说的那么厉害!其实资源网站给我们的诱惑是在是太大了,其主要原因是可以帮助我们搜索到很多意想不到的资源! 为了回应大家的需求&#xff…

基于web的可定制数据填报平台

需求说明: 基于web的可定制数据填报平台的功能分析 一、表单设计 表项表 :用户创建的一个表,表项名通过用户创建表单时传递过来,User id表明是那个用户的表单 Id 表项名 User id(学号/工号) 1 表一 2 表二 n 表…

eclipse中中文字体过小

转自 http://www.cnblogs.com/HD/p/3654139.html 转载于:https://www.cnblogs.com/tiancy/p/5478275.html

2.22考试

题目不难 T1做得太慢了&#xff0c;而且T2&#xff0c;T3也显得思维不够灵活 注意复习 T1&#xff1a; n<2000 f[n],剩n张牌期望次数 f[n].....从1~n-1算上方案递推过来 C(n-1,i-1)值域分成i段&#xff0c; g[i]表示i的全排列中&#xff0c;不存在j<j1且a[j]1a[j]的方案数…

【LeetCode】142 - Linked List Cycle II

Given a linked list, return the node where the cycle begins. If there is no cycle, return null. Follow up:Can you solve it without using extra space? Solution&#xff1a; Discuss上的分析&#xff1a;Suppose the first meet at step k,the length of the Cycle …

基于Springboot的生活方式分享平台的设计与实现

需求&#xff1a; 由前台和后台管理两个部分组成。前台作为与用户直接交互的可视化界面&#xff0c;主要功能包括&#xff1a;用户登录、用户注册、首页浏览查看热门笔记分享、切换笔记分类、点赞评论收藏笔记、查看用户主页关注用户、搜索相关笔记或用户等。用户拥有个人中心…

面试题:2018最全Redis面试题整理

1、什么是Redis?Redis 是完全开源免费的&#xff0c;遵守BSD协议&#xff0c;是一个高性能的key-value数据库。 Redis 与其他 key - value 缓存产品有以下三个特点&#xff1a;Redis支持数据的持久化&#xff0c;可以将内存中的数据保存在磁盘中&#xff0c;重启的时候可以再次…

[喵咪的Liunx(1)]计划任务队列脚本后台进程Supervisor帮你搞定

喵咪的Liunx(1)]计划任务队列脚本后台进程Supervisor帮你搞定 前言 哈喽大家好啊,好久不见啊(都快一个月了),要问为什么没有更新博客呢只应为最近在录制PhalApi的视频教程时间比较少,作为弥补那么为大家带来一点干货Supervisor,话不多说那么就开始今天的分享把 附上: 喵了个咪的…