when upcasting .....
1
// codes start
2
class base{//a base class
3
4
// constructor
5
public base(){
6
System.out.println("base class construct");
7
}
8
// perform
9
public void perform(){
10
System.out.println("base class perform");
11
}
12
// destructor
13
public void finalize(){
14
System.out.println("base class destruct");
15
}
16
}
17
18
19
class subbase extends base{// derive from base
20
21
// constructor
22
public subbase(){
23
System.out.println("sub class construct");
24
}
25
// perform
26
public void perform(){
27
System.out.println("sub class perform");
28
}
29
// destructor
30
public void finalize(){
31
System.out.println("sub class destruct");
32
}
33
}
34
35
public class casting{// test casting class
36
// constructor
37
public casting(){
38
System.out.println("begin casting test");
39
}
40
41
public static void main(String args[]){
42
base father = new base();
43
subbase son = new subbase();
44
45
father.perform();
46
son.perform();
47
48
father = (base)son; // <1>
49
father.perform();
50
51
son = (subbase)father; // <2>
52
son.perform();
53
54
father = (base)((subbase)father); // <3>
55
father.perform();
56
}
57
}
58
59
// codes end
60
Today ,when i go for a interview ,the project manager asked me this question !
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

Acturally ,It's just relate to the knowledge of reference && object !
Be carefull ,Nothing !