zoukankan      html  css  js  c++  java
  • scala-class

    object Scala {
    
      def main( args : Array[ String ] ) : Unit =
        {
          val p = new Point( 1, 2 );
          println( p );
          p.move( 12, 13 );
          println( p );
    
          val p2 = new Point
          println( p2 )
    
          val p3 = new Point( y = 2 )
          println( p3 )
    
          val point4 = new Point2
          point4.x = 99
          point4.x_=( 98 );
          point4.y = 101 // 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 = 0, var x : Int = 0 ) {
      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 = 0;
      private var _y = 0;
      private var bound = 100;
    
      //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 = 99
          point4.y = 101 // prints the warning
          println( point4 )
        }
    }
    
    class Point {
      private var _x = 0;
      private var _y = 0;
      private var bound = 100;
    
    
      //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 = 99
          point4.y = 101 // prints the warning
          println( point4 )
    
          val point5 = new Point( 50 )
          point5.y = 101 // prints the warning
          println( point5 )
    
        }
    }
    
    class Point {
      private var _x = 0;
      private var ny = 0;
      private var bound = 100;
    
      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)"
    }
  • 相关阅读:
    php服务器安装memcache
    [PHP脚本]安装及使用
    [PHP]针对外服务器mail函数的php.ini配置
    [COBOL]安装配置及大型机模拟Hercules配置
    [Sqlite3].help中的命令介绍
    [NavigatLite4Mysql]DB管理工具使用
    [MS-SQLserver2005]Windows64位安装问题
    [MS-SQL]20130806_LocalDB_DOS命令使用
    [MS-SQL]20130806_LocalDB安装
    [MS]Microsoft SQL Server 2008 R2 开发版/企业版/标准版
  • 原文地址:https://www.cnblogs.com/shuiyonglewodezzzzz/p/9352108.html
Copyright © 2011-2022 走看看