1.class
scala的类和C#中的类有点不一样,诸如: 声明一个未用priavate修饰的字段 var age,scala编译器会字段帮我们生产一个私有字段和2个公有方法get和set ,这和C#的简易属性类似;若使用了private修饰,则它的方法也将会是私有的。这就是所谓的统一访问原则。
细节的东西太多,还是上代码在注释里面细讲吧
-
- class Person{
- var age=18
- def Age=age
- def incremen(){this.age+=1}
- }
-
-
- class Student{
- var age=20
- private[this] var gender="male"
- private var name="clow"
-
- def getName=this.name
- def setName(value:String){this.name=value}
- }
-
-
- class Teacher {
- var age: Int = _
- var name: String = _
-
-
- def this(age: Int, name: String){
- this()
- this.age=age
- this.name=name
- }
- }
类的构造器细节
-
-
- class Person(name:String,var age:Int) {
- println("person")
-
- def show(): Unit = {
- println("show.."+name)
- }
-
- var gender:String=_
-
-
- def this(name:String,age:Int, gender:String){
- this(name,age)
- this.gender=gender
- }
- }
2.scala没有静态的修饰符,但object下的成员都是静态的 ,若有同名的class,这其作为它的伴生类。在object中一般可以为伴生类做一些初始化等操作,如我们常常使用的val array=Array(1,2,3) (ps:其使用了apply方法)
- object Dog{
- private var age=0
- def Age={
- age+=1
- age
- }
- }
-
- class Dog{
- var age1=Dog.age
- }
3.Apply的使用
- class ApplyTest{
-
- val name="clow";
- def apply() {
- println("class ApplyTest--apply()...");
- }
-
- }
-
-
- object ApplyTest{
- def apply() = {
- println("object ApplyTest--apply()...");
- new ApplyTest()
- }
- }
-
-
- object Basic4 {
-
- def main(args: Array[String]) {
-
- var a1=ApplyTest()
- println(a1.name)
-
- a1()
- }
- }
Apply怎么用它来实现单例模式
- class ApplyTest private{
- def sayHello(){
- println("hello jop")
- }
- }
-
- object ApplyTest{
- var instant:ApplyTest=null
- def apply() ={
- if(instant==null) instant=new ApplyTest
- instant
-
- }
- }
-
- object ApplyDemo {
- def main(args:Array[String]){
- val t=ApplyTest()
- t.sayHello()
- }
- }