Inheritance snippet – Vehicle (Java)
April 27, 2016
Categorised in: Java Codes
//******************* Vehicle.java ******************* public class Vehicle { private String PNo; private int CNo; Vehicle(){ System.out.println("Vehicle() "); PNo = "NA"; CNo = 0; } Vehicle(String PNo, int CNo){ System.out.println("Vehicle( String, int ) "); this.PNo = PNo; this.CNo = CNo; } public String getPNo(){ return this.PNo; } public void setPNo(String PNo){ this.PNo = PNo; } public int getCNo(){ return this.CNo; } public void setCNo(int CNo){ this.CNo = CNo; } } //******************* Car.java ******************* public class Car extends Vehicle{ private int type; private String color; Car(){ System.out.println(" Car() "); type = 0; color = "NA"; } Car(String PNo, int CNo, String color , int type){ //This should be the first statement if we are overriding the default constructor to be called by base class. super( PNo, CNo); System.out.println("Car( String, int, String, int )"); //setPNo("MH12 1213"); //By doing this we are overwriting the default values of 0 which is being set by the default constructor of vehicle. So extra CPU cycles are invested //setCNo(12334); this.type = 2; this.color = "Black"; } public int getType() { return type; } public void setType(int type) { this.type = type; } public String getColor() { return color; } public void setColor(String color) { this.color = color; } public void display(){ //System.out.println("PNo : " + PNo); This is invalid as it breaks encapsulation System.out.println("PNo : " + getPNo() ); System.out.println("CNo : " + getCNo() ); System.out.println("Color : " + color ); System.out.println("Type : " + type ); } } //******************* Main.java ******************* public class Main { public static void main( String [] args){ Car c1 = new Car("MH12 233", 23445, "Red", 1); c1.display(); /* Commented since we are using parameterized constructor c1.setPNo("MH12J3552"); c1.setCNo(213432); c1.setColor("Red"); c1.setType(2); //2 means diesel lol */ //Vehicle v1 = new Vehicle(); //There is no connection with c1. It is a different object //v1.setPNo("MH21"); //v1.setCNo(9999); //Commented since we have display //print(c1); //since it is static we can directly call. Note: c1 is passed and not v1. We cannot pass v1. If it were Vehicle v in function's formal parameters. We could have passed c1 and v1 in print() System.out.println("------------------------"); //c1.display(); } public static void print( Car c ){ System.out.println("PNo : " + c.getPNo() ); System.out.println("CNo : " + c.getCNo()); } }
Output:
Vehicle( String, int )
Car( String, int, String, int )
PNo : MH12 233
CNo : 23445
Color : Black
Type : 2
————————
Pratik Kataria is currently learning Springboot and Hibernate.
Technologies known and worked on: C/C++, Java, Python, JavaScript, HTML, CSS, WordPress, Angular, Ionic, MongoDB, SQL and Android.
Softwares known and worked on: Adobe Photoshop, Adobe Illustrator and Adobe After Effects.