super keyword
The super is a reference variable that is used
to refer immediate parent class object.
Whenever you create the
instance of subclass, an instance of parent class is created implicitly i.e.
referred by super reference variable.
Usage of super Keyword
1) super
is used to refer immediate parent class instance variable.
Problem
without super keyword
1. class Vehicle{
2. int speed=50;
3. }
4.
5. class Bike3 extends Vehicle{
6. int speed=100;
7.
8. void display(){
9. System.out.println(speed);//will print speed of Bike
10. }
11. public static void main(String args[]){
12. Bike3 b=new Bike3();
13. b.display();
14.
15. }
16. }
Output:100
Solution by super keyword
1. //example of super keyword
2.
3. class Vehicle{
4. int speed=50;
5. }
6.
7. class Bike4 extends Vehicle{
8. int speed=100;
9.
10. void display(){
11. System.out.println(super.speed);//will print speed of Vehicle now
12. }
13. public static void main(String args[]){
14. Bike4 b=new Bike4();
15. b.display();
16.
17. }
18. }
Output:50
2) super
is used to invoke parent class constructor.
1. class Vehicle{
2. Vehicle(){System.out.println("Vehicle is created");}
3. }
4.
5. class Bike5 extends Vehicle{
6. Bike5(){
7. super();//will invoke parent class constructor
8. System.out.println("Bike is created");
9. }
10. public static void main(String args[]){
11. Bike5 b=new Bike5();
12.
13. }
14. }
Output:Vehicle is created Bike is created
super()
is added in each class constructor automatically by compiler.
As we
know well that default constructor is provided by compiler automatically but
it also adds super() for the first statement.If you are creating your own
constructor and you don't have either this() or super() as the first
statement, compiler will provide super() as the first statement of the
constructor.
|
Another example of super
keyword where super() is provided by the compiler implicitly.
1. class Vehicle{
2. Vehicle(){System.out.println("Vehicle is created");}
3. }
4.
5. class Bike6 extends Vehicle{
6. int speed;
7. Bike6(int speed){
8. this.speed=speed;
9. System.out.println(speed);
10. }
11. public static void main(String args[]){
12. Bike6 b=new Bike6(10);
13. }
14. }
Output:Vehicle is created
10
3) super
can be used to invoke parent class method.
The
super keyword can also be used to invoke parent class method. It should be
used in case subclass contains the same method as parent class as in the
example given below:
|
1. class Person{
2. void message(){System.out.println("welcome");}
3. }
4.
5. class Student16 extends Person{
6. void message(){System.out.println("welcome to java");}
7.
8. void display(){
9. message();//will invoke current class message() method
10. super.message();//will invoke parent class message() method
11. }
12.
13. public static void main(String args[]){
14. Student16 s=new Student16();
15. s.display();
16. }
17. }
Output:welcome to java
welcome
In
the above example Student and Person both classes have message() method if we
call message() method from Student class, it will call the message() method
of Student class not of Person class because priority is given to local.
|
In
case there is no method in subclass as parent, there is no need to use super.
In the example given below message() method is invoked from Student class but
Student class does not have message() method, so you can directly call
message() method.
|
Program in case super is not required
1. class Person{
2. void message(){System.out.println("welcome");}
3. }
4.
5. class Student17 extends Person{
6.
7. void display(){
8. message();//will invoke parent class message() method
9. }
10.
11. public static void main(String args[]){
12. Student17 s=new Student17();
13. s.display();
14. }
15. }
Output:welcome
No comments:
Post a Comment