博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
scala第九天Class
阅读量:7144 次
发布时间:2019-06-29

本文共 2580 字,大约阅读时间需要 8 分钟。

hot3.png

主类:

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.day9import 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    }  }}

 

转载于:https://my.oschina.net/u/587323/blog/848112

你可能感兴趣的文章
UsingModelicaBuildingLibrary
查看>>
php_codesninffer phpcs用法学习使用:
查看>>
Python多线程threading进阶笔记
查看>>
使用 Kotlin 开发 Android 应用 | 8 个最优秀的 Android Studio 插件 Kotlin Android 素材...
查看>>
Java 面向对象 之 enum 枚举类型
查看>>
一张图看懂阿里云网络产品【十四】IPv6转换服务
查看>>
Android应用开发—Android 消息处理机制:Handler&amp;Message
查看>>
数字货币量化实践线上分享
查看>>
Android应用开发-onNewIntent()
查看>>
推进你的计算机网络事业:10个技巧
查看>>
Android APP 性能优化的一些思考
查看>>
HyperLedger Fabric交易流程(6.3)
查看>>
JavaScript MVC 学习笔记(四)类的使用(下)
查看>>
java写的Http服务器下载工具
查看>>
Java中不同包下类与类之间的访问
查看>>
Seafile 发布 SeafileDocs 1.2,面向研发团队的文档管理
查看>>
php开源项目大全
查看>>
[20180607]函数与标量子查询8.txt
查看>>
阿里云服务器亚太东南1、亚太东南2、亚太东南 3、 5是哪个城市
查看>>
谈一下我们是如何开展code review的
查看>>