Java 中的向上转型 Father f = new Son();

Posted yycjavastudy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 中的向上转型 Father f = new Son();相关的知识,希望对你有一定的参考价值。

    作为初学者的我们,常常看到关于标题中这种形式的代码,那么向上转型时方法和成员变量到底调用谁的呢?这样写的意义在哪呢?

    首先我们来看一段代码:

 

 1 class Father{
 2     
 3     int i = 100;
 4     static int j = 101;
 5     final int m = 102;
 6     
 7     public void drive() {
 8         System.out.println("I can drive!");
 9     }
10     
11     public static void work() {
12         System.out.println("I can work!");
13     }
14     public Father() {
15         System.out.println("我是爸爸!");
16     }
17     18         19 20 21 }
22 
23 class Son extends Father {
24     int i = 10;
25     static int j = 11;
26     final int m = 12;
27     public Son() {
28         System.out.println("我是儿子!");
29     }
30     public void drive() {
31         System.out.println("I can not drive!");
32     }
33     
34     public void study() {
35         System.out.println("I should study!");
36     }
37     public static void work() {
38         System.out.println("I can not work!");
39     }
40 }
41 
42 public class TestNew {
43     public static void main(String[] args) {
44         
45         Father man = new Son(); 
46         System.out.println(man.i);
47         System.out.println(man.m);
48         System.out.println(man.j);
49         
50         man.drive();
51         Father.work();
52         //        man.study();报错!!!!
53     }
54     
55     /** Console:
56      * 100
57      * 102  
58      * 101
59      * I can not drive!
60      * I can work!
61      *
62      * 总结:
63      * 1、构造方法:子类和父类参数一致,先父后子
64      * 2、方法:向上转型时,静态方法用父类。子类特有无法调用,重写方法用子类
65      * 3、成员变量:都采用父类的
66      *
67      */
68 
69 }

    这段代码的输出展示在了下方的文档注释中。

    我们不难发现,成员变量结果都是父类中的,而方法,其一:子类调用不了独有的,其二:当方法重写时,是调用的子类方法,其三,静态方法严格意义上来讲没太大联系,因为其一般是通过类名来

调用的。

    关于其意义,我比较喜欢在网上看到的这句话:

通过子类化来适应变化,并且可以复用基类的代码

    可以来通过上述程序运行结果来体会一下这句话。

    如有错误,请大家批评和指正!

 

 

以上是关于Java 中的向上转型 Father f = new Son();的主要内容,如果未能解决你的问题,请参考以下文章

Java向上转型和向下转型

Java向上转型和向下转型

Java SE之向上转型与向下转型

java 向上转型与向下转型

Java上转型和下转型

java 多态