object Scala {

  def main( args : Array[ String ] ) : Unit =
{
val p = new Point( , );
println( p );
p.move( , );
println( p ); val p2 = new Point
println( p2 ) val p3 = new Point( y = )
println( p3 ) val point4 = new Point2
point4.x =
point4.x_=( );
point4.y = // prints the warning
println( point4 ) /**
*
* <pre>
* Primary constructor parameters with val and var are public.
* However, because vals are immutable,
* you can’t write the following.
* class Point(val x: Int, val y: Int)
* val point = new Point(1, 2)
* point.x = 3 // <-- does not compile
* </pre>
* <pre>
* 首要构造器上参数都是public.如果没有明确写出是var x:Int,默认是val
* val是不可变的,所以如上代码不能通过编译
* </pre>
*/
}
} class Point( var y : Int = , var x : Int = ) {
def move( dy : Int, dx : Int ) : Unit =
{
this.x = x;
this.y = y;
} override def toString() : String =
s"($x,$y)"
} class Point2 {
private var _x = ;
private var _y = ;
private var bound = ; //define method x for access _x
def x = _x; /**
* <pre>
* def x_= and def y_= are for validating and setting
* the value of _x and _y.
* Notice the special syntax for the setters:
* the method has _= appended to the identifier of the
* getter and the parameters come after
* </pre>
* <pre>
* def x_=和def y_=为了检验设置的值.注意setters方法上特殊的语法.
* </pre>
*/
def x_=( newValue : Int ) : Unit =
{
if ( newValue < bound )
_x = newValue
else
printWarning
}
//define method y for access _y
def y = _y;
def y_=( newValue : Int ) : Unit =
{
if ( newValue < bound )
_x = newValue
else
printWarning
}
private def printWarning = println( "WARNING: Out of bounds" ); override def toString() : String =
s"($x,$y)"
}

下面这份代码更能说明class的setter和getter

object Scala {

  def main( args : Array[ String ] ) : Unit =
{ val point4 = new Point
point4.xx =
point4.y = // prints the warning
println( point4 )
}
} class Point {
private var _x = ;
private var _y = ;
private var bound = ; //define method x for access _x
def xx = _x; /**
* <pre>
* def x_= and def y_= are for validating and setting
* the value of _x and _y.
* Notice the special syntax for the setters:
* the method has _= appended to the identifier of the
* getter and the parameters come after
* </pre>
* <pre>
* def x_=和def y_=为了检验设置的值.注意setters方法上特殊的语法.
* </pre>
*/
def xx_=( newValue : Int ) : Unit =
{
if ( newValue < bound )
_x = newValue
else
printWarning
}
//define method y for access _y
def y = _y;
def y_=( newValue : Int ) : Unit =
{
if ( newValue < bound )
_x = newValue
else
printWarning
}
private def printWarning = println( "WARNING: Out of bounds" ); override def toString() : String =
s"($xx,$y)"
}

多个构造函数

object Scala {

  def main( args : Array[ String ] ) : Unit =
{ val point4 = new Point
point4.xx =
point4.y = // prints the warning
println( point4 ) val point5 = new Point( )
point5.y = // prints the warning
println( point5 ) }
} class Point {
private var _x = ;
private var ny = ;
private var bound = ; def this( xxx : Int ) {
this()
xx = xxx;
println("here")
} //define method x for access _x
def xx = _x; /**
* <pre>
* def x_= and def y_= are for validating and setting
* the value of _x and _y.
* Notice the special syntax for the setters:
* the method has _= appended to the identifier of the
* getter and the parameters come after
* </pre>
* <pre>
* def x_=和def y_=为了检验设置的值.注意setters方法上特殊的语法.
* </pre>
*/
def xx_=( newValue : Int ) : Unit =
{
if ( newValue < bound )
_x = newValue
else
printWarning
}
//define method y for access _y
def y = ny;
def y_=( newValue : Int ) : Unit =
{
if ( newValue < bound )
_x = newValue
else
printWarning
}
private def printWarning = println( "WARNING: Out of bounds" ); override def toString() : String =
s"($xx,$y)"
}

scala-class的更多相关文章

  1. jdb调试scala代码的简单介绍

    在linux调试C/C++的代码需要通过gdb,调试java代码呢?那就需要用到jdb工具了.关于jdb的用法在网上大家都可以找到相应的文章,但是对scala进行调试的就比较少了.其实调试的大致流程都 ...

  2. scala练习题1 基础知识

    1, 在scala REPL中输入3. 然后按下tab键,有哪些方法可以被调用? 24个方法可以被调用, 8个基本类型: 基本的操作符, 等:     2,在scala REPL中,计算3的平方根,然 ...

  3. 牛顿法求平方根 scala

    你任说1个整数x,我任猜它的平方根为y,如果不对或精度不够准确,那我令y = (y+x/y)/2.如此循环反复下去,y就会无限逼近x的平方根.scala代码牛顿智商太高了println( sqr(10 ...

  4. Scala集合和Java集合对应转换关系

    作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 用Scala编码的时候,经常会遇到scala集合和Java集合互相转换的case,特意mark一 ...

  5. Scala化规则引擎

    1. 引言 什么是规则引擎 一个业务规则包含一组条件和在此条件下执行的操作,它们表示业务规则应用程序的一段业务逻辑.业务规则通常应该由业务分析人员和策略管理者开发和修改,但有些复杂的业务规则也可以由技 ...

  6. Scala快速概览

    IDEA工具安装及scala基本操作 目录 一. 1. 2. 3. 4. 二. 1. 2. 3. 三. 1. 2. 3. 4. 5. 6. 7. 四. 1. (1) (2) (3) (4) (5) ( ...

  7. Scala Macros - scalamela 1.x,inline-meta annotations

    在上期讨论中我们介绍了Scala Macros,它可以说是工具库编程人员不可或缺的编程手段,可以实现编译器在编译源代码时对源代码进行的修改.扩展和替换,如此可以对用户屏蔽工具库复杂的内部细节,使他们可 ...

  8. Scala Macros - 元编程 Metaprogramming with Def Macros

    Scala Macros对scala函数库编程人员来说是一项不可或缺的编程工具,可以通过它来解决一些用普通编程或者类层次编程(type level programming)都无法解决的问题,这是因为S ...

  9. Scala Reflection - Mirrors,ClassTag,TypeTag and WeakTypeTag

    反射reflection是程序对自身的检查.验证甚至代码修改功能.反射可以通过它的Reify功能来实时自动构建生成静态的Scala实例如:类(class).方法(method).表达式(express ...

  10. Scala For Java的一些参考

          变量 String yourPast = "Good Java Programmer"; val yourPast : String = "Good Java ...

随机推荐

  1. Excel技巧--使用温度计图让目标与实际对比更明显

    如上图,有一业绩目标与实际值对比表格,我们可使用如上图右方的温度计图表来让数字对比更明显些. 做法: 1.选择该表格,点击插入-->柱形图,簇状柱形图. 2.右键点击图表“实际值”柱,点选“设置 ...

  2. Windows Azure Web Site (18) Azure Web App设置MIME

    <Windows Azure Platform 系列文章目录> 在笔者之前的文章中,介绍了我们在使用Azure Web App,可以把静态资源保存到Azure Storage中: Wind ...

  3. Mysql binlog日志的介绍

    mysql的复制功能是  大规模,高性能应用的基础.  分担读负载.水平扩展 是通过二进制日志进行复制,是异步的. 只记录成功执行的修改事件,出现错误的和回滚的是不会纪录的. 日志路径 查看日志 RO ...

  4. Ubuntu 14.10 下Eclipse操作HBase

    环境介绍 64位Ubuntu14.10,Hadoop 2.5.0 ,HBase 0.99.0 准备环境 1 安装Hadoop 2.5.0,可参考http://www.cnblogs.com/liuch ...

  5. springboot(三 使用mybatis +springboot 完成简单的增删改查)

    先说一些注解: @EnableAutoConfiguration 可以帮助SpringBoot应用将所有符合条件的@Configuration配置都加载到当前SpringBoot创建并使用的IoC容器 ...

  6. springboot(五)读写分离,多个读库,Druid监控--待整理

    1.修改mybatis.properties # 主数据源,默认的 spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.d ...

  7. Web jsp开发学习——实现页面跳转和传参

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletExcepti ...

  8. Volley封装

    Volley.jar下载 在Application初始化 Volley queues=Volley.newRequestQueue(appContext); 并返回RequestQueue 对象 pu ...

  9. [UE4]Overlay

    Overlay容器的子控件叠加,没有z-order属性设置,只能在编辑器中调整前后层级,也不能设置位置.可以理解是Canvas Panel的简化控件

  10. [UE4]Get All Widgets Of Class、Get All Widgets with Interface,根据类名或者接口UI实例对象

    Get All Widgets Of Class.Get All Widgets with Interface,是系统蓝图函数库提供的方法,可以在任何蓝图中使用. 可以方便地获得UI实例对象,进而使用 ...