* Better explanation I fixed the link from my last commit * Reordered changes, created "More Information"
		
			
				
	
	
		
			61 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
---
 | 
						|
title: Inheritance Basics
 | 
						|
---
 | 
						|
# Inheritance Basics
 | 
						|
 | 
						|
So great you have successfully created a Car class. But, wait, aren't Tesla cars supposed to be electric variants? I want an Electric car class, but it also should have the properties of the original `Car` class.
 | 
						|
 | 
						|
Solution : **Inheritance**. Java provides a neat way to "inherit" parent properties :
 | 
						|
 | 
						|
```java
 | 
						|
public class Car {
 | 
						|
 | 
						|
    private String name;
 | 
						|
    private String manufacturerName;
 | 
						|
 | 
						|
    public Car(String name, String man) {
 | 
						|
        this.name = name;
 | 
						|
        this.manufacturerName = man;
 | 
						|
    }
 | 
						|
    // Getter method
 | 
						|
    public String getName() {
 | 
						|
        return name;
 | 
						|
    }
 | 
						|
    // Getter method
 | 
						|
    public String getManufacturerName() {
 | 
						|
        return manufacturerName;
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
public class ElectricCar extends Car {
 | 
						|
 | 
						|
    public ElectricCar(String name, String man) {
 | 
						|
        super(name, man);
 | 
						|
    }
 | 
						|
 | 
						|
    public void charge() {
 | 
						|
     System.out.println("Charging ...");
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
ElectricCar modelS = new ElectricCar("Model S","Tesla");
 | 
						|
// prints Tesla
 | 
						|
System.out.println(modelS.getManufacturerName());
 | 
						|
// prints Charging ...
 | 
						|
modelS.charge();
 | 
						|
```
 | 
						|
 | 
						|
 <a href='https://repl.it/CJZY/0' target='_blank' rel='nofollow'>Run Code</a>
 | 
						|
 | 
						|
See here that the class `ElectricCar` inherits or `extends` the public methods from `Car` class, as well as has its own methods and properties. Cool way to pass on information!
 | 
						|
 | 
						|
Inheritance is a way for *Object Oriented* languages to share properties from an existing class to a new class. The new class can use the properties of the old one, but the old one cannot use the new properties added into the new class.
 | 
						|
 | 
						|
Also notice the usage of <a href='https://docs.oracle.com/javase/tutorial/java/IandI/super.html' target='_blank' rel='nofollow'>super</a> keyword here. Since our `Car` class had a constructor, so we have to initialize that constructor from the child class as well. We do that using the `super` keyword. Read more about <a>Inheritance here</a>.
 | 
						|
 | 
						|
Inheritance is a way for *Object Oriented* languages to share properties from an existing class to a new class. The new class can use the properties of the old one, but the old one cannot use the new properties added into the new class.
 | 
						|
 | 
						|
 | 
						|
#### More Information
 | 
						|
- [Techopedia: Inheritance](https://www.techopedia.com/definition/3226/inheritance-java)
 |