Repository navigation
Expand file tree
/
Copy pathVehicleEngineEx1.java
More file actions
66 lines (55 loc) · 1.49 KB
/
Copy pathVehicleEngineEx1.java
File metadata and controls
66 lines (55 loc) · 1.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package chapter11;
// VehicleEngineEx1.java
interface Vehicle{
boolean hasAnEngine= true;
public void vehicleInfo();
}
class Engine {
String engineInfo;
Engine (String engineType)
{
this.engineInfo = engineType;
}
void engineInfo(){
if (this.engineInfo == null)
System.out.println("Engine info is not available");
else
System.out.println("Engine info: " + this.engineInfo);
}
}
class Car implements Vehicle {
String engineInfo;
String carInfo;
Car (Engine engineInfo, String carInfo){
engineInfo = new Engine(this.engineInfo);
this.carInfo = carInfo ;
}
@Override
public
void vehicleInfo() {
if (this.carInfo == null)
System.out.println("Car info is not available");
else
System.out.println("Car info is : " + this.carInfo);
}
}
public class VehicleEngineEx1 {
public static void main(String[] args) {
Engine myCarEngine= new Engine("6-Cylinder Hybrid");
Car myCar = new Car(myCarEngine, "Toyota Camry 2016");
myCarEngine.engineInfo();
myCar.vehicleInfo();
System.out.println();
Engine my2ndCarEngine= new Engine("4-Cylinder");
Car my2ndCar = new Car(my2ndCarEngine, null);
my2ndCarEngine.engineInfo();
my2ndCar.vehicleInfo();
System.out.println();
Engine myNextCarEngine= null;
Car myNextCar = new Car(myNextCarEngine, null);
myNextCar.vehicleInfo();
// myNextCarEngine.engineInfo(); // NOT ALLOWED
/* Null pointer access: The variable myNextCarEngine can only be null at this location
*/
}
}