Scala 中的类和对象
类和对象是面向对象编程的基本概念,围绕现实生活中的实体展开。
班级
类是用户定义的蓝图或原型,从中创建对象。或者换句话说,一个类将字段和方法(定义动作的成员函数)组合成一个单元。基本上,类构造函数用于初始化新对象,字段是提供类及其对象状态的变量,方法用于实现类及其对象的行为。
类声明
在 Scala 中,类声明包含 class 关键字,后跟类的标识符(名称)。但是有一些可选属性可以根据应用要求与类声明一起使用。一般来说,类声明可以包括这些组件,按顺序:
- 关键字class: class关键字用于声明类型类。
- 类名:名称应以首字母开头(按约定大写)。
- 超类(如果有):类的父类(超类)的名称,如果有的话,前面有关键字extends。一个类只能扩展(子类)一个父类。
- 特征(如果有):由类实现的特征的逗号分隔列表,如果有的话,前面有关键字 extends。一个类可以实现多个特征。
- 主体:类主体由 { }(花括号)包围。
句法:
class Class_name{
// methods and fields
}
注意:该类的默认修饰符是 public。
例子:
Scala
// A Scala program to illustrate
// how to create a class
// Name of the class is Smartphone
class Smartphone
{
// Class variables
var number: Int = 16
var nameofcompany: String = "Apple"
// Class method
def Display()
{
println("Name of the company : " + nameofcompany);
println("Total number of Smartphone generation: " + number);
}
}
object Main
{
// Main method
def main(args: Array[String])
{
// Class object
var obj = new Smartphone();
obj.Display();
}
}
Scala
// A Scala program to illustrate the
// Initialization of an object
// Class with primary constructor
class Dog(name:String, breed:String, age:Int, color:String )
{
println("My name is:" + name + " my breed is:" + breed);
println("I am: " + age + " and my color is :" + color);
}
object Main
{
// Main method
def main(args: Array[String])
{
// Class object
var obj = new Dog("tuffy", "papillon", 5, "white");
}
}
Scala
// Scala program to illustrate how
// to create an Anonymous object
class GFG
{
def display()
{
println("Welcome! GeeksforGeeks");
}
}
object Main
{
// Main method
def main(args: Array[String])
{
// Creating Anonymous object of GFG class
new GFG().display();
}
}
输出:
Name of the company : Apple
Total number of Smartphone generation: 16
对象
它是面向对象编程的基本单元,代表现实生活中的实体。一个典型的 Scala 程序会创建许多对象,如您所知,这些对象通过调用方法进行交互。一个对象包括:
- 状态:由对象的属性表示。它还反映了对象的属性。
- 行为:它由对象的方法表示。它还反映了一个对象对其他对象的响应。
- 身份:它为一个对象赋予一个唯一的名称,并使一个对象能够与其他对象交互。
将 Dog 视为一个对象,并查看下图了解它的身份、状态和行为。
对象对应于现实世界中发现的事物。例如,图形程序可能具有诸如“圆形”、“方形”、“菜单”之类的对象。一个在线购物系统可能有诸如“购物车”、“客户”和“产品”之类的对象。
声明对象(也称为实例化类)
当一个类的对象被创建时,该类被称为实例化。所有实例共享类的属性和行为。但是这些属性的值,即状态对于每个对象都是唯一的。一个类可以有任意数量的实例。
在 Scala 中,类的对象是使用 new 关键字创建的。在 Scala 中创建对象的语法是:
句法:
var obj = new Dog();
Scala 还提供了一个名为伴生对象的功能,您可以在其中创建对象而无需使用 new 关键字。
初始化对象
new运算符通过为新对象分配内存并返回对该内存的引用来实例化一个类。 new运算符还调用类构造函数。
例子:
斯卡拉
// A Scala program to illustrate the
// Initialization of an object
// Class with primary constructor
class Dog(name:String, breed:String, age:Int, color:String )
{
println("My name is:" + name + " my breed is:" + breed);
println("I am: " + age + " and my color is :" + color);
}
object Main
{
// Main method
def main(args: Array[String])
{
// Class object
var obj = new Dog("tuffy", "papillon", 5, "white");
}
}
输出:
My name is:tuffy my breed is:papillon
I am: 5 and my color is :white
说明:此类包含一个构造函数。我们可以识别构造函数,因为在 Scala 中,类的主体是构造函数的主体,而参数列表跟在类名之后。 Dog 类中的构造函数有四个参数。以下语句提供“tuffy”、“papillon”、5、“white”作为这些参数的值:
var obj = new Dog("tuffy", "papillon", 5, "white");
执行此语句的结果可以说明为:
匿名对象
匿名对象是被实例化但不包含任何引用的对象,当您不想重用它时,可以创建一个匿名对象。
例子:
斯卡拉
// Scala program to illustrate how
// to create an Anonymous object
class GFG
{
def display()
{
println("Welcome! GeeksforGeeks");
}
}
object Main
{
// Main method
def main(args: Array[String])
{
// Creating Anonymous object of GFG class
new GFG().display();
}
}
输出:
Welcome! GeeksforGeeks