Skip to content

Commit 7ea4d15

Browse files
committed
MethodHiding
1 parent 2716357 commit 7ea4d15

File tree

3 files changed

+80
-14
lines changed

3 files changed

+80
-14
lines changed

src/oops2/MethodHiding.java

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package oops2;
2+
3+
// static variables and methods get inherited,
4+
// but they do not behave like normal overridden methods
5+
6+
// static variables is accessible in child
7+
8+
class Parent {
9+
static int x = 20;
10+
11+
static void staticMethod() {
12+
System.out.println("Parent static");
13+
}
14+
15+
void instanceMethod() {
16+
System.out.println("Parent instance");
17+
}
18+
}
19+
20+
// static methods are accessible in child
21+
class Child extends Parent {
22+
23+
}
24+
25+
// static methods can't be overridden
26+
// since overriding is run time polymorphism
27+
// static methods belongs to class , not object
28+
// static binding happens at compile time
29+
class Child2 extends Parent {
30+
static void staticMethod() {
31+
System.out.println("Child2 static");
32+
}
33+
34+
@Override
35+
void instanceMethod() {
36+
System.out.println("Child2 instance");
37+
}
38+
}
39+
40+
public class MethodHiding {
41+
public static void main(String[] args) {
42+
System.out.println(Child.x); // 20
43+
Child.staticMethod(); // Parent static
44+
45+
Parent p = new Child2();
46+
p.staticMethod(); // Parent static
47+
p.instanceMethod(); // Child2 instance
48+
49+
// because static methods are resolved using ref type, not object type
50+
// Ref type = parent
51+
// so Parent.show()
52+
// this is method hiding
53+
}
54+
}

src/oops2/Singleton.java

Lines changed: 0 additions & 14 deletions
This file was deleted.

src/oops2/SingletonUsage.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package oops2;
2+
3+
class Singleton {
4+
private static Singleton instance;
5+
6+
private Singleton() {
7+
System.out.println("Singleton object created");
8+
}
9+
10+
public static Singleton getInstance () {
11+
if(instance == null) {
12+
instance = new Singleton();
13+
}
14+
return instance;
15+
}
16+
}
17+
18+
public class SingletonUsage {
19+
public static void main(String[] args) {
20+
21+
Singleton s1 = Singleton.getInstance();
22+
Singleton s2 = Singleton.getInstance();
23+
24+
System.out.println(s1 == s2);
25+
}
26+
}

0 commit comments

Comments
 (0)