Scala 中的 Getter 和 Setter
Scala 中的Getter和Setter是分别帮助我们获取变量值和实例化类/特征变量的方法。 Scala 为 JVM 生成一个具有私有变量字段以及 getter 和 setter 方法的类。在 Scala 中,getter 和 setter 不命名为 getXxx 和 setXxx,但它们的用途相同。在任何时候,我们都可以自己重新定义 getter 和 setter 方法。
二传手
Setter 是一种技术,通过它我们可以设置类变量的值。设置类变量很简单,可以通过两种方式完成:-
- 首先,如果一个类的成员可以从任何地方访问。即没有指定访问修饰符。
例子:// A Scala program to illustrate // Setting the variable of a class // Name of the class is Student class Student { // Class variables var student_name: String= " " var student_age: Int= 0 var student_rollno= 0 } // Creating object object Main { // Main method def main(args: Array[String]) { // Class object var obj = new Student() obj.student_name= "Yash" obj.student_age= 22 obj.student_rollno= 59 println("Student Name: " + obj.student_name) println("Student Age: " + obj.student_age) println("Student Rollno: " + obj.student_rollno) } }
输出:
Student Name: Yash Student Age: 22 Student Rollno: 59
出于安全原因,不建议这样做。因为直接访问类的成员不是一个很好的方法来启动和更改值,因为它会允许其他人识别变量。
- 其次,如果一个类的成员被定义为私有的。变量的初始化是通过使用类的对象将变量传递给该类的公共方法来完成的。
例子:// A Scala program to illustrate // Setting the private variable of a class // Name of the class is Student class Student { // Class variables var student_name: String= " " var student_age: Int= 0 private var student_rollno= 0 // Class method def set_roll_no(x: Int) { student_rollno= x } } // Creating object object GFG { // Main method def main(args: Array[String]) { // Class object var obj = new Student() obj.student_name= "Yash" obj.student_age= 22 //error: variable student_rollno in class // Student cannot be accessed in Student //obj.student_rollno= 59 obj.set_roll_no(59) // Directly getting the value of variable println("Student Name: "+ obj.student_name) // Directly getting the value of variable println("Student Age: "+obj.student_age) // Through method calling println("Student Rollno: "+obj.student_rollno) } }
吸气剂
Getter 是一种获取类变量值的技术。
- 直接获取全局变量的值。我们在其中调用指定对象的变量名称。
- 通过使用对象的方法调用获取变量的值。当我们无法访问类变量但方法是公开的时,这种技术很好。
例子:// A Scala program to illustrate // Getting the value of members of a class // Name of the class is Student class Student { // Class variables var student_name: String= " " var student_age: Int= 0 // Getter private var student_rollno= 0 // Class method def set_rollno(x: Int){ student_rollno= x } def get_rollno(): Int ={ return student_rollno } } // Creating object object Main { // Main method def main(args: Array[String]) { // Class object var obj = new Student() obj.student_name= "Yash" obj.student_age= 22 obj.set_rollno(59) // Directly getting the value of variable println("Student Name: " + obj.student_name) // Directly getting the value of variable println("Student Age: " + obj.student_age) // Through method calling println("Student Rollno: " + obj.get_rollno) } }
输出 :
Student Name: Yash Student Age: 22 Student Rollno: 59