文档章节

scala第九天Class

我是菜鸟我骄傲
 我是菜鸟我骄傲
发布于 2017/03/01 08:42
字数 550
阅读 19
收藏 0

#程序员薪资揭榜#你做程序员几年了?月薪多少?发量还在么?>>>

主类:

package com.learn.scala.day9

/**
  * Created by zhuqing on 2017/2/28.
  */
object Day9Class {
  def main(args: Array[String]): Unit = {
    /**
      * 初始化类时,可以用括号也可以不用括号
      * var person = new Person()
      */
    val person = new Person
    //实际调用的是 name_=(String)
    person.name = "Tom"
    //实际调用的是 age_=(Int)
    person.age = 12
    //如果方法没有参数,可以不写括号
    person incrementAge;
    //person.age实际调用的方法是age()
    println("age=" + person.age)
    person incrementAgeNoBody;
    println("age=" + person.age);

    //实际调用的是方法 call_=(call:String)
    person.call = "old man"

    println(person.name + " is " + person.call)


    person.setId("11-01")

    val robbie = new Person
    robbie.setId("11-02")
    robbie.name = "robbie"

    //@BeanProperty默认生成的Java式的get,set方法
    robbie.setSchoolName("BeiFang")
    println(robbie.getSchoolName)
    //标注为@BeanProperty后,默认的get,set方法存在
    robbie.schoolName = "NanFang"
    println(robbie.schoolName)
  }
}

Person类:

package com.learn.scala.day9

import scala.beans.BeanProperty


/**
  * Scala的类与Java的类似,scala中默认为公开类
  * Created by Robbie on 2017/2/28.
  */
class Person {

  /**
    * 属性默认为公开,但是必须给默认值,这点不像Java
    * Java类中的属性一般为私有,让后提供公开get/set方法,但Scala中不提倡这样中,
    * Scala认为这样纯粹是多写代码,浪费时间。
    * Scala默认生成get,set 方法,
    *  1.例如age , get方法:age(),set方法age_=(Int),
    *  2.如果属性是私有的,生成的方法也是私有的。
    * 如果属性是公有的,生成的方法也是公有的。
    *  3.对val的属性只会生成get方法
    *
    */
  var name: String = ""
  var age: Int = 0
  //called 是私有的
  private var called: String = "";

  /**
    * Scala提供了比Java更严的访问限制, private[this]表示,只能在当前实例中使用
    */
  private[this] var id = ""

  /**
    * //@BeanProperty会自动生成Java规范的get,set方法
    * 标注为@BeanProperty后,原来默认的get,set方法存在
    */
  @BeanProperty var schoolName: String = ""

  /**
    * 设置Id
    *
    * @param id
    */
  def setId(id: String): Unit = {
    this.id = id
  }


  /**
    * called 的get方法
    *
    * @return
    */
  def call = called

  /**
    * called的set方法
    *
    * @return
    */
  def call_=(call: String) = {
    if (age < 10) {
      called = "child"
    } else if (age < 20) {
      called = "boy"
    } else if (age < 30) {
      called = "man"
    } else {
      called = call
    }

  }

  /**
    * 方法默认公开
    */
  def incrementAge(): Unit = {
    age = age + 1
  }

  /**
    * 方法的简写可以不带括号
    */
  def incrementAgeNoBody = age = age + 1

  override def equals(obj: Any): Boolean = {
    val other = obj.asInstanceOf[Person]
    //other.id 报错,因为Id是private[this],尽管class相同,但不能在其他实例中使用,
    //other.called是可以调用的
    if (!this.called.equals(other.called)) {
      false
    } else if (!this.name.equals(other.name)) {
      false
    } else {
      true
    }

  }
}

 

© 著作权归作者所有

我是菜鸟我骄傲
粉丝 15
博文 253
码字总数 161087
作品 0
西安
架构师
私信 提问
加载中

评论(0)

大数据Hadoop第九周——Scala开发环境搭建+Scala语言值变量类型表达式

大数据第9周 1.Scala开发环境搭建 目前具备全部功能的集成开发环境只有Idea。 下载解压idea:tar -zxvf ideaIE-2019.3.3.tar.gz。 进入bin目录,执行:./idea.sh。 选择新建一个project。 接...

蔡军帅_ACM
04/26
0
0
Java50道经典习题-程序17 猴子吃桃问题

题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第1...

osc_bquv1gtr
2019/04/30
2
0
大数据学习资源整理

github地址 后面继续更新在github utils4s scala语法学习 common库 BigData库 Spark Spark core Spark Streaming Spark SQL Spark 机器学习 Spark 其它 ES 贡献代码步骤 贡献者 utils4s包含各...

jacksu
2016/02/25
231
0
alpha冲刺——历次记录合集

这个作业属于哪个课程 2020春季软件工程W班 这个作业要求在哪里 团队作业——alpha冲刺 这个作业的目标 完成团队项目——福大热话的alpha版本 参考文献 《构建之法》 #项目计划准备及代码规范...

敢DeadLine诸仙
04/29
0
0
超人学院第九期大数据高薪就业班招生了

超人学院第九期 大数据高薪就业班招生了 超人学院第九期大数据高薪就业班开始招生了,课程加量不加价,还设有奖学金。亲,还等什么呢,赶快来报名吧!! 我们来看看课程具体内容 课程主题 课...

超人学院
2015/07/23
168
0

没有更多内容

加载失败,请刷新页面

加载更多

如果我有jQuery背景,那么“ AngularJS中的思考”吗? [关闭]

问题: Closed . 已关闭 。 This question needs to be more focused . 这个问题需要更加集中 。 It is not currently accepting answers. 它当前不接受答案。 Want to improve this questio......

技术盛宴
34分钟前
9
0
ArrayList-不常用方法

这篇笔记主要记录一些不常用方法,了解一下可以干什么,有个印象。 改变数组容量 /** * 将该<tt> ArrayList </ tt>实例的容量调整为列表的当前大小。 * 应用程序可以使用此操作来最大程度...

jackdawl
38分钟前
4
0
PCDN+路由器就能赚钱? 揭秘京东云无线宝背后的黑科技

受疫情影响,今年视频直播、点播等在线视频业务迎来了爆发期,看视频成为人们宅在家中的主要消遣方式之一,由此带来的互联网流量增长大幅增加了对 CDN流量的消耗。传统CDN依赖于运营商、IDC...

京东智联云开发者
39分钟前
16
0
Oracle 中关于 group by 的那些坑

分组聚合Group by 在mysql中,对group by 的使用限制是比较宽松,还是比较灵活的, 表数据之间的调取是完全没问题的; 而在Oracle中,对group by 就有一定限制,两句相同的SQL语句,可能在mysql中不...

煌sir
56分钟前
20
0
MySQL服务器的SQL模式

与其它数据库不同,MySQL 服务器可以在不同的 SQL 模式下运行,并且可以针对不同的客户端以不同的方式应用这些模式,具体取决于 sql_mode 系统变量的值。 SQL 模式定义了 MySQL 数据库所支持...

Linux就该这么学
今天
36
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部