Java中多态的理解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中多态的理解相关的知识,希望对你有一定的参考价值。
----------------------------------
最近在学习Java,接触了
多态的概念,用了好久才
搞懂,来给大家分享一下
博主的想法;
----------------------------------
多态,就是指一个对象在
不同时候体现出来的不同
状态;
----------------------------------
多态的实现要有3个前提:
1.要有继承关系;
2.要有方法重写;
3父类引用指向子类对象;
即 父 f = new 子();
----------------------------------
多态的成员访问特点:
1.成员变量:
编译看左边,运行看左边;
2.静态成员变量:
覆盖父类的值;
3.构造方法:
创建子类对象的时候,访问父类的构造方法,对父类的数据初始化;
4.成员方法:
编译看左边,运行看右边;(即父类和子类都有该方法,否则就报错,运行时是调用用子类的方法)
5.静态成员方法:
编译看左边,运行看左边;
----------------------------------
总结:
只有重写后才会使用子类
的方法;静态方法与类有
关(通过类名加“.”访问)
,算不上重写,所以父类的
静态方法不会被覆盖;成
员变量和静态成员变量不
存在重写,所以不会被覆盖;
所以只有成员方法才会调
用子类的方法。
----------------------------------
下面给出一个实例来说明:
1 public class DuoTai { 2 public static void main(String[] args) { 3 4 Fu f = new Zi();//fu,zi //这里是多态 5 System.out.println(f.num); //100(fu的值) 6 System.out.println(f.a); //300(fu的值) 7 //System.out.println(f.b); //不能访问子类独有(父类没有)的成员变量;ERROR 8 f.method(); //child //动态成员方法 9 f.fun(); //Fu //静态成员方法 10 System.out.println(); 11 12 Zi z = new Zi();//fu,zi //这里是普通的对象创建方法 13 System.out.println(z.num); //200(zi的值) 14 System.out.println(z.a); //400(zi的值) 15 System.out.println(z.zi); //500 16 z.method(); //child 17 z.fun(); //Zi 18 System.out.println(); 19 20 Fu m = new Fu();//zi //这里是普通的对象创建方法 21 System.out.println(m.num); //100(fu的值) 22 System.out.println(m.a); //300(fu的值) 23 m.method(); //father 24 m.fun(); //Fu 25 } 26 } 27 class Fu{ 28 public int num = 100; //fu的成员变量 29 public static int a = 300; //fu的静态成员变量 30 public Fu(){ //fu的构造方法 31 System.out.println("fu"); 32 } 33 public void method(){ //fu的成员方法 34 System.out.println("father"); 35 } 36 public static void fun(){ //fu的静态成员方法 37 System.out.println("Fu"); 38 } 39 } 40 class Zi extends Fu{ 41 public int num = 200; //zi的成员变量 42 public static int a = 400; //zi的静态成员变量 43 public int b = 500; //zi的成员变量(独有的) 44 public Zi(){ //zi的构造方法 45 System.out.println("zi"); 46 } 47 public void method(){ //zi的成员方法 48 System.out.println("child"); 49 } 50 public static void fun(){ //zi的静态成员方法 51 System.out.println("Zi"); 52 } 53 }
------------------------------
上面就是我对多态的理
解,如有错误,欢迎大
家指正;感谢阅读;
------------------------------
以上是关于Java中多态的理解的主要内容,如果未能解决你的问题,请参考以下文章