Scala中的对象

对象是类的实例。创建它是为了使用该类的成员,即使用与该类相关的字段和方法。

new关键字用于创建类的对象

语法:

     var class_name = new obj_name;

说明:

创建对象时,将为所有成员提供所需的存储空间。创建变量并调用函数。实际的调用是在调用成员时,但是在对象初始化时为其分配了内存空间。

示例

import java.io._

class Student(val rlno: Int, val sname: String, val percent: Int) {
	var rollno: Int = rlno
	var name : String = sname
	var percentage = percent;

	def printresult(){
		print("Roll number : " + rollno);
		print("\nName  : "+ name);
		print("\n Has scored  "+ percentage +" % and is ");
		if(percentage > 40)
			print("passed")
		else 
			print("failed")
	}
}

object Demo {
	def main(args: Array[String]) {
		var stu = new Student(10, "Ramesh", 56);
		stu.printresult();
	}
}

输出结果

Roll number : 10
Name  : Ramesh
Has scored  56 % and is passed

对象的延迟初始化

在首次访问时,将执行惰性初始化以初始化变量。这样可以提高代码的效率。惰性变量由惰性修饰符定义。

语法:

    lazy var class_name = new obj_name;

单例对象

单例对象是只有一个实例的类。它是一个值,是由类定义的对象。可以通过使用import语句进行定义来重用它,并在其中直接定义方法。

    Object dog{
        def bark (){
            print("parting")
        }
    }

伴生对象

伴随对象与类具有相同的名称。对象和类都是彼此的伴侣。伴随对象可以使用该类的私有成员,并通过其功能为其添加一些功能。

    class circle{
	    def perimeter(var radius){
		    return (2 * 3.14 * radius)
	    }
    }
    object circle {
	    def area( var radius){
		    return (peimeter(radius)*radius)/2;  
	    }
    }

该对象在其函数中使用该类来制作更高效的程序。可以通过导入包调用来使用此对象。