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();的主要内容,如果未能解决你的问题,请参考以下文章