Scala-类

来源:互联网 发布:java用户信息管理系统 编辑:程序博客网 时间:2024/06/06 04:44

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);  }}
原创粉丝点击