文档章节

scala第九天Class

我是菜鸟我骄傲
 我是菜鸟我骄傲
发布于 2017/03/01 08:42
字数 550
阅读 14
收藏 0
点赞 0
评论 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
    }

  }
}

 

© 著作权归作者所有

共有 人打赏支持
我是菜鸟我骄傲
粉丝 12
博文 208
码字总数 132689
作品 0
西安
架构师
超人学院第九期大数据高薪就业班招生了

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

超人学院 ⋅ 2015/07/23 ⋅ 0

大数据学习资源整理

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

jacksu ⋅ 2016/02/25 ⋅ 0

运行Spark 任务出现的错误

Exception in thread "main" java.lang.StackOverflowError at sun.util.calendar.AbstractCalendar.getTime(AbstractCalendar.java:175) at java.util.Date.normalize(Date.java:1257) at j......

Ryan-瑞恩 ⋅ 2015/11/27 ⋅ 0

scala-协变、逆变、上界、下界

测试源代码 欢迎大家关注: scala工具库 ,里面包含各种库的测试用例和使用说明文档 B是A的子类,A是B的父类。 当我们定义一个协变类型List[A+]时,List[Child]可以是List[Parent]的子类型。 ...

jacksu ⋅ 2015/11/20 ⋅ 5

A full rebuild may help if 'OptionParser.class' was compiled against an incompatible version of scala.

srcmainscala:-1: info: compiling [ERROR] error: missing or invalid dependency detected while loading class file 'OptionParser.class'. [INFO] Could not access type ScalaObject in......

sca7 ⋅ 2017/04/09 ⋅ 0

3个shell的小脚本的练习

1;打印9*9乘法表2;输出国际象棋的棋盘3;猴子;摘了n个香蕉 1;打印9*9乘法表一:for i in {1..9}dofor j in doecho -n “$i$j=$(ij) ”doneechodone 方法二: !/bin/bash for i in {1..9}...

英强云计算 ⋅ 2017/12/13 ⋅ 0

scala + intellij idea 环境搭建及编译、打包

大数据生态圈中风头正旺的Spark项目完全是采用Scala语言开发的,不懂Scala的话,基本上就没法玩下去了。Scala与Java编译后的class均可以运行于JVM之上,就好象.NET中F#与C#的关系。下面进入正...

Zero零_度 ⋅ 2016/06/10 ⋅ 0

spark shell 运行异常

Association with remote system [akka.tcp://sparkMaster@master :7077] has failed, address is now gated for [5000] ms. Reason: [Association failed with [akka.tcp://sparkMaster@mas......

sca7 ⋅ 2016/08/26 ⋅ 2

启动kafka失败了 bin/kafka-server-start.sh config/server.properties

Failed to acquire lock on file .lock in /hadoop/kafka/./logs . A Kafka instance in another process or thread is using this directory. at kafka.log.LogManager$$anonfun$lockLogDir......

sca7 ⋅ 2016/08/19 ⋅ 1

Scala入门教程 (一)

Scala入门教程 [TOC] Scala是神马? 说的正式点,Scala是一种多范式的编程语言,其将面向对象编程与函数式编程的特性结合了起来。并且Scala同Java一样都运行在Java虚拟机之上,经过编译之后都...

窗边的扁豆 ⋅ 2017/11/25 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Centos7重置Mysql 8.0.1 root 密码

问题产生背景: 安装完 最新版的 mysql8.0.1后忘记了密码,向重置root密码;找了网上好多资料都不尽相同,根据自己的问题总结如下: 第一步:修改配置文件免密码登录mysql vim /etc/my.cnf 1...

豆花饭烧土豆 ⋅ 今天 ⋅ 0

熊掌号收录比例对于网站原创数据排名的影响[图]

从去年下半年开始,我在写博客了,因为我觉得业余写写博客也还是很不错的,但是从2017年下半年开始,百度已经推出了原创保护功能和熊掌号平台,为此,我也提交了不少以前的老数据,而这些历史...

原创小博客 ⋅ 今天 ⋅ 0

LVM讲解、磁盘故障小案例

LVM LVM就是动态卷管理,可以将多个硬盘和硬盘分区做成一个逻辑卷,并把这个逻辑卷作为一个整体来统一管理,动态对分区进行扩缩空间大小,安全快捷方便管理。 1.新建分区,更改类型为8e 即L...

蛋黄Yolks ⋅ 今天 ⋅ 0

Hadoop Yarn调度器的选择和使用

一、引言 Yarn在Hadoop的生态系统中担任了资源管理和任务调度的角色。在讨论其构造器之前先简单了解一下Yarn的架构。 上图是Yarn的基本架构,其中ResourceManager是整个架构的核心组件,它负...

p柯西 ⋅ 今天 ⋅ 0

uWSGI + Django @ Ubuntu

创建 Django App Project 创建后, 可以看到路径下有一个wsgi.py的问题 uWSGI运行 直接命令行运行 利用如下命令, 可直接访问 uwsgi --http :8080 --wsgi-file dj/wsgi.py 配置文件 & 运行 [u...

袁祾 ⋅ 今天 ⋅ 0

JVM堆的理解

在JVM中,我们经常提到的就是堆了,堆确实很重要,其实,除了堆之外,还有几个重要的模块,看下图: 大 多数情况下,我们并不需要关心JVM的底层,但是如果了解它的话,对于我们系统调优是非常...

不羁之后 ⋅ 昨天 ⋅ 0

推荐:并发情况下:Java HashMap 形成死循环的原因

在淘宝内网里看到同事发了贴说了一个CPU被100%的线上故障,并且这个事发生了很多次,原因是在Java语言在并发情况下使用HashMap造成Race Condition,从而导致死循环。这个事情我4、5年前也经历...

码代码的小司机 ⋅ 昨天 ⋅ 2

聊聊spring cloud gateway的RetryGatewayFilter

序 本文主要研究一下spring cloud gateway的RetryGatewayFilter GatewayAutoConfiguration spring-cloud-gateway-core-2.0.0.RC2-sources.jar!/org/springframework/cloud/gateway/config/G......

go4it ⋅ 昨天 ⋅ 0

创建新用户和授予MySQL中的权限教程

导读 MySQL是一个开源数据库管理软件,可帮助用户存储,组织和以后检索数据。 它有多种选项来授予特定用户在表和数据库中的细微的权限 - 本教程将简要介绍一些选项。 如何创建新用户 在MySQL...

问题终结者 ⋅ 昨天 ⋅ 0

android -------- 颜色的半透明效果配置

最近有朋友问我 Android 背景颜色的半透明效果配置,我网上看资料,总结了一下, 开发中也是常常遇到的,所以来写篇博客 常用的颜色值格式有: RGB ARGB RRGGBB AARRGGBB 这4种 透明度 透明度...

切切歆语 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部