Extending a Class in Scala
Last Updated :
23 Jun, 2023
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 :
- To override method in scala override keyword is required.
- Only the primary constructor can pass parameters to the base constructor.
Syntax:
class derived_class_name extends base_class_name
{
// Methods and fields
}
Example:
class Geeks1
{
var Name: String = "chaitanyashah"
}
class Geeks2 extends Geeks1
{
var Article_no: Int = 30
def details()
{
println("Author name: " + Name);
println("Total numbers of articles: " + Article_no);
}
}
object GFG
{
def main(args: Array[String])
{
val ob = new Geeks2();
ob.details();
}
}
|
Output:
Author name: chaitanyashah
Total numbers of articles: 30
In the above example Geeks1 is the base class and Geeks2 is the derived class which is derived from Geeks1 using extends keyword. In the main method when we create the object of Geeks2 class, a copy of all the methods and fields of the base class acquires memory in this object. That is why by using the object of the derived class we can also access the members of the base class.
Example:
class Parent
{
var Name1: String = "geek1"
var Name2: String = "geek2"
}
class Child1 extends Parent
{
var Age: Int = 32
def details1()
{
println(" Name: " + Name1)
println(" Age: " + Age)
}
}
class Child2 extends Parent
{
var Height: Int = 164
def details2()
{
println(" Name: " + Name2)
println(" Height: " + Height)
}
}
object GFG
{
def main(args: Array[String])
{
val ob1 = new Child1();
val ob2 = new Child2();
ob1.details1();
ob2.details2();
}
}
|
Output:
Name: geek1
Age: 32
Name: geek2
Height: 164
In the above example Parent is the base class Child1 and Child2 are the derived class which is derived from Parent using extends keyword. In the main method when we create the objects of Child1 and Child2 class a copy of all the methods and fields of the base class acquires memory in this object.
Example:
class Bicycle (val gearVal:Int, val speedVal: Int)
{
var gear: Int = gearVal
var speed: Int = speedVal
def applyBreak(decrement: Int)
{
gear = gear - decrement
println("new gear value: " + gear);
}
def speedUp(increment: Int)
{
speed = speed + increment;
println("new speed value: " + speed);
}
}
class MountainBike(override val gearVal: Int,
override val speedVal: Int,
val startHeightVal : Int)
extends Bicycle(gearVal, speedVal)
{
var startHeight: Int = startHeightVal
def addHeight(newVal: Int)
{
startHeight = startHeight + newVal
println("new startHeight : " + startHeight);
}
}
object GFG
{
def main(args: Array[String])
{
val bike = new MountainBike(10, 20, 15);
bike.addHeight(10);
bike.speedUp(5);
bike.applyBreak(5);
}
}
|
Output:
new startHeight : 25
new speed value: 25
new gear value: 5
In above program, when an object of MountainBike class is created, a copy of the all methods and fields of the superclass acquire memory in this object.
Please Login to comment...