您的位置:首页 > 大数据

大数据系列修炼-Scala课程07

2016-08-09 19:43 375 查看
核心内容:

1、Scala辅助构造器实战

2、Scala主构造器实战

1、Scala辅助构造器实战
(1)在Java当中,构造函数的名字和类的名字一样,但是在Scala中,构造函数的名字为this

(2)任何辅助构造函数必须要调用其他的构造函数才能使用(Java不是)

(3)Scala中的辅助构造函数除了以上两点其余用法和Java中的构造函数用法十分相似

示例程序:

object App6
{
def main(args:Array[String]):Unit=
{
val aa =  new Student("zhangming",98.8)
println(aa.name)
println(aa.score)
aa.fun()
}
}
class Student
{
var name:String = _   //占位符将由编译器自动赋值  -->null
var score:Double = _  //-->0.0
def this(name:String,score:Double)
{
this()//辅助构造函数调用主构造函数
this.name = name
this.score = score
}
def fun()={println(this.name + "\t" +this.score)}
}


对于Java来说,Java是这么来写这个程序的,大致上差不多:

public class App6
{

public static void main(String[] args2)
{
Student aa = new Student("zhangming",98.8);
System.out.println(aa.name);
System.out.println(aa.score);
aa.fun();
}
}
class Student
{
String name;
Double score;
public Student(String name,Double score)
{
this.name = name;//Java中并不需要调用别的构造函数
this.score = score;
}
public void fun()
{
System.out.println(this.name +"\t" + this.score );
}
}


2、Scala主构造器实战
1、若用户提供了主构造器,系统将不会再提供主构造器,否则系统将会提供无参的主构造器

2、在Scala中,每个类都有主构造器。主构造器并不以this方法定义,而是与类定义交织在一起定义

3、主构造器的参数将会被编译成类的属性成员

4、除了方法(函数)以外,主构造器会执行类中定义的所有语句

5、一旦用户通过private关键字来修饰主构造器,就只能通过辅助构造器来构造对象了

示例程序:(在上面程序的基础上改)

object App6
{
def main(args:Array[String]):Unit=
{
val aa =  new Student("zhangming",98.8)
println(aa.name)
println(aa.score)
aa.fun()
}
}
class Student(var name:String,var score:Double)
{
def fun()={println(this.name + "\t" +this.score)}
}


从上面的这个程序可以看出,Scala中因为主构造器的使用,程序编写更加简单灵活!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: