zoukankan      html  css  js  c++  java
  • Scala-类

    1、OOP对象属性与方法

    
    
    
    object helloworld {
          def main(args: Array[String]) {
    
    
          //定义一个对象,对象里面有私有属性和方法
            class Person {
            //Scala里面的字段都包括了方法 私有属性val包括了get()和set()防范
            //val 属性包括了get()方法
            private  var id = 0;//字段必须初始化
            //如果属性是私有的,那么get和set方法也是私有的
            var name = "hello";//没有加private,初始化的时候就已经生成了set和get方法
    
            def increment (a:Int) = id += a;//方法默认是公有属性,可以访问该类的所有对象的私有字段
            //如果定义方法的时候没有加括号,调用的时候就不能加括号
            def current() = id;
            //属性为一个常量,只有get方法没有set方法
            val age = 21;
          }
            //实例化对象
            var p = new Person;
            println(p.age);//调用get方法
            p.increment(2);
            println(p.current());
            p.name = "ton";//对name属性进行赋值
            println(p.name);
    
    
      }
    }
    
    
    

    2、private[ 修饰符] 属性

    
    object helloworld {
          def main(args: Array[String]) {
    
    
            class Person{
              private var id = 0;
              def incre(a: Int) = {
                id += a;
              }
              def isLess(other:Person) = id < other.id;//这里因为其他对象也是Person类
              //所以可以访问Person的私有属性
            }
            val p1 =  new Person;
            p1.incre(1);
            val p2 = new Person;
           println( p1.isLess(p2));
    
    
      }
    }
    
    
    object helloworld {
          def main(args: Array[String]) {
    
    
            class Person{
              private[this] var id = 0;//只能在自己的对象中访问
              //其他对象不能访问,哪怕是同一个类
              def incre(a: Int) = {
                id += a;
              }
              def isLess(other:Person) = id < other.id;//这里因为其他对象也是Person类
              //所以可以访问Person的私有属性
            }
            val p1 =  new Person;
            p1.incre(1);
            val p2 = new Person;
           println( p1.isLess(p2));
    
    
      }
    }
    

    3、构造器

    
    object helloworld {
          def main(args: Array[String]) {
    
            class Person{
              var id = 0;
              var name = "tom";
              var age = 12;
    
              def this(name:String) = {
                this();//调用主构造
                this.name = name;
              }
    
              def this(name:String,age:Int) = {
                this(name);//调用辅助构造
                this.age  = age;
              }
            }
    
            var p = new Person("yy",23);
            println(p.age);
            println(p.name);
    
    
    
      }
    }
    
    
    object helloworld {
          def main(args: Array[String]) {
    
            //主构造器中的参数有三个属性
            //val ===>read 只读 get()
            //var ===》get()/set()
            //none===>none
            class Person (val name:String,var age:Int ,id:Int){//主构造器可以带参数也可以不用带参数
              var id = 0;
              var name = "tom";
              var age = 12;
    
              def this( name:String) = {
                this();//调用主构造
                this.name = name; //由于在主构造器里面的name为val属性,所以不能进行set()
              }
    
              def this(name:String,age:Int) = {
                this(name);//调用辅助构造
                this.age  = age;
              }
            }
    
            var p = new Person("yy",23);
            println(p.age);
            println(p.name);
    
    
    
      }
    }
    
    欢迎关注我的公众号:小秋的博客 CSDN博客:https://blog.csdn.net/xiaoqiu_cr github:https://github.com/crr121 联系邮箱:rongchen633@gmail.com 有什么问题可以给我留言噢~
  • 相关阅读:
    Dart语言概览
    Flutter开发环境配置(MAC版)
    Jetpack系列:Paging组件帮你解决分页加载实现的痛苦
    Jetpack系列:应用内导航的正确使用方法
    Jetpack系列:LiveData入门级使用方法
    在Android平台使用SNPE应链接libc++库
    Android binder流程简图
    使用Visual Studio Code进行远程开发
    用clock()函数计时的坑
    OpenCV Mat格式存储YUV图像
  • 原文地址:https://www.cnblogs.com/flyingcr/p/10327106.html
Copyright © 2011-2022 走看看