scala的面向对象编程

一:简单的编程

1.scala的简单编程

 1 package er
 2 
 3 class People{
 4   var name:String="";
 5   val age:Int=10;
 6   def eat():String={
 7     name+" eat...";
 8   }
 9   def watchFootBall(teamName:String):String={
10     name+" is watch match of "+teamName;
11   }
12 }
13 object two {
14   def main(args: Array[String]): Unit = {
15     var people =new People;
16     people.name="tom";
17     println("name="+people.name);
18     println("age="+people.age);
19     println(people.eat());
20     println(people.watchFootBall("zhongguo"))
21   }
22 }

2. 效果

  

3.构造方法

  主构造方法,辅助构造方法。

  辅助构造函数是在主构造函数没有的情况下,执行的构造函数。

  调用对象的时候会调用主构造方法。

  辅助构造方法必须去调用主构造方法

 1 package er
 2 
 3 class People2(val name:String,val age:Int){
 4   //************辅助构造函数**********
 5   def this(name:String){           //*
 6     this(name,0)                    //*
 7   }                                 //*
 8   def this(age:Int){                //*
 9     this("xx",age)                  //*
10   }                                 //*
11   //************辅助构造函数**********
12   def sayHello()=println("name:"+name+",age:"+age)
13 }
14 object thrid {
15   def main(args: Array[String]): Unit = {
16     val people=new People2("zhangsan",10);
17     people.sayHello();
18   }
19 
20 }

4.效果

  

二:半生类与半生对象

1.object的介绍

  

2.半生类和半生对象

  

3.半生的案例程序(半生类可以调用半生)

 1 package er
 2 
 3 class Thrid(val name:String,val age:Int){
 4   private val eyeNum:Int=2;
 5   def this(name:String){
 6     this(name,0)
 7   }
 8   def this(age:Int){
 9     this("xx",age)
10   }
11   def sayHello()=println("name:"+name+",age:"+age)
12 }
13 object Thrid {
14   def main(args: Array[String]): Unit = {
15     val thrid=new Thrid("zhangsan");
16     //直接调用半生类中的属性
17     println("eyeNum is : "+thrid.eyeNum);
18   }
19 
20 }

4.效果

  

5.apply方法

  一种简单的创建class的方式。

  

 6.apply的程序示例

 1 package er
 2 class Four(name:String){
 3   def say()=println("name is "+name);
 4 }
 5 object Four {
 6   def apply(name: String): Four = new Four(name)
 7   def main(args: Array[String]): Unit = {
 8     //因为使用了apply方法,其实apply是在new对象,所以下面就不要再new了
 9     var a=Four("uiui")
10     a.say
11   }
12 }

7.效果

  

8.get与set方法

  

9.不会产生公共的get与set方法

  当权限是private的时候

  

  产生 的set与get方法是private的,只能在类的内部使用。

  

10.val定义的字段

  val定义的字段,只会生成getter,因为他的值是不会变的。

11.class中的介绍

  在主构造方法执行的时候,会执行类中的所有语句,除了方法,相当于构造器

  如果参数的声明不带val或者var,那么相当于private,只能在内部使用

  

  

原文地址:https://www.cnblogs.com/juncaoit/p/6254096.html