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 有什么问题可以给我留言噢~
原文地址:https://www.cnblogs.com/flyingcr/p/10327106.html