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);
}
}