zoukankan      html  css  js  c++  java
  • Dream------scala--类的属性和对象私有字段实战详解

    Scala类的属性和对象私有字段实战详解

     

    一、类的属性

      scala类的属性跟java有比较大的不同,需要注意的是对象的私有(private)字段

      1、私有字段:字段必须初始化(当然即使不是私有字段也要赋值)

      2、属性默认是public级别的,而且无法用public修饰。

      3、可以有很多类,并且默认是public级别(如果声明的时候加上会报错,不知为何)

      4、如果属性是public的,会默认生成类属性的getter和setter方法,无需显示的提供getter,setter方法

      5、私有字段(用private修饰),必须自己提供getter、setter方法

      

    class Person{
      //私有属性age的声明,注意:必须赋初值
      private var age = 0
      var name="dsfs"
      //需提供get、set方法方法,不然无法访问
      def set_age{age +=1}
      def get_age = age
    }
    class Student{
      var s_age = 12
    }
    object HelloOOP {
      def main(args : Array[String]): Unit ={
        val person = new Person()
        person.set_age
        println(person.get_age)
        val student = new Student
        //打印12---可以直接得到s_age的值,说明默认提供了getter方法
        println(student.s_age)
        student.s_age=15
        //打印15----,说明默认提供了setter方法
        println(student.s_age)
      }
    }

    二、类的方法是可以访问这个类的所有对象的私有字段的(我自己都蒙了)

      

    class Student{
      private var privateAge = 1
      val name = "Scala"
      def age = privateAge
      //在这个方法中,我们访问了Student这个对象的私有属性,这是合法的
      //如果private[this] var privateAge =1 声明的话,就不能,因为这样写就限定了,只有这个类自己的方法能访问自己的对象的这个私有属性
      //即使是别的对象是根据我这个类声明的(other,也就是说这个属性(privateAge)是属于当前对象私有的,而isYounger是不能访问其他对象的
      //这个私有属性的,他只能访问当前对象的这个私有属性(privateAge),说白了就是other.privateAge这个对象访问不到,
      // 这就是所谓的对象私有属性,我们限定一个属性归当前对象所有,
      def isYounger(other : Student) = privateAge < other.privateAge
    }

    相关来源:

    DT大数据梦工厂,微信公众号是:DT_Spark,每天都会有大数据实战视频发布,请您持续学习。
    相关资料:
    scala深入浅出实战经典完整视频、PPT、代码下载:
    百度云盘:http://pan.baidu.com/s/1c0noOt6
    腾讯微云:http://url.cn/TnGbdC
    360云盘:http://yunpan.cn/cQ4c2UALDjSKy  访问密码45e2

  • 相关阅读:
    tomcat窗口修改显示名字
    Windows Server 2012 安装oracle11g
    oracle查看和修改session和最大连接数
    ORA-12518 TNS:监听程序无法分发客户机连接的解决办法
    Oracle数据导入导出imp/exp :未知的命令开头。。。忽略了剩余的行
    用Dev C++编写第一个C语言程序
    PAT 甲级 1045 Favorite Color Stripe (30 分)(思维dp,最长有序子序列)
    PAT 甲级 1043 Is It a Binary Search Tree (25 分)(链表建树前序后序遍历)*不会用链表建树 *看不懂题...
    PAT 甲级 1044 Shopping in Mars (25 分)(滑动窗口,尺取法,也可二分)
    数据库设计的基本步骤
  • 原文地址:https://www.cnblogs.com/wangliansong/p/4737941.html
Copyright © 2011-2022 走看看