Class
A class is a user-defined blueprint or prototype which creates the objects. Or in other words, a class combines the fields and methods(member function which defines actions) into a single unit. Classes in Scala are blueprints for creating objects. They can contain methods, values, variables, types, objects, traits, and classes which are collectively called members.
Declaration of class
In Scala, a class declaration contains the class keyword, followed by an identifier(name) of the class.
In general, class declarations can include these components, in order:
- Keyword class: We use class keyword to declare the type class.
- Class name: The name should begin with a initial letter (capitalized by convention).
- Superclass(if any):The name of the class’s parent (superclass), if any, preceded by the keyword extends. A class can only extend (subclass) one parent.
- Traits(if any): A comma-separated list of traits implemented by the class, if any, preceded by the keyword extends. A class can implement more than one trait.
- Body: The class body is surrounds by { } (curly braces).
Syntax:
class Class_name{ // methods and fields }

Extending the class
Extending a class in Scala user can design an inherited class. To extend a class in Scala we use extends keyword. there are two restrictions to extend a class in Scala which are as follows:
- We use override keyword to override the method.
- Only the primary constructor can pass parameters to the base constructor.
Syntax:
class base_class_name extends derived_class_name { // Methods and fields }


Implicit Classes
Implicit classes allow implicit conversations with the class’s primary constructor when the class is in scope. An implicit class is a class that can be marked with an ‘implicit’ keyword.
Syntax − The following is the syntax for implicit classes. Here implicit class is always in the object scope where all method definitions are allowed because the implicit class cannot be a top-level class.
Syntax
object <object name> { implicit class <class name>(<Variable>: Data type) { def <method>(): Unit = } }
Objects
It is a basic unit of Object-Oriented Programming and represents real-life entities. A typical Scala program creates many objects, which as you know, interact by invoking methods. An object consists of :
- State: It is represented by attributes of an object. It also reflects the properties of an object.
- Behavior: It is represented by methods of an object. It also reflects the response of an object with other objects.
- Identity: It gives a unique name to an object and enables one object to interact with other objects.

In Scala, We create an object by using the new keyword. The syntax of creating an object in Scala is:
Syntax:
val obj = new Person1()
Initializing an object
The new operator instantiates a class by allocating memory for a new object and returning a reference to that memory. The new operator also invokes the class constructor.

Output:-

Anonymous Object
Anonymous objects are objects that instantiate but do not contain any reference, you can create an anonymous object when you do not want to reuse it.


Conclusion
By Reading this blog you will get to know about what is class and what are objects in Scala. How can we Extend the class and How to initialize the objects in Scala
References:-
https://www.geeksforgeeks.org/class-and-object-in-scala/
https://www.tutorialspoint.com/scala/scala_classes_objects.htm