Java中多态的理解
2017-08-30 08:12
274 查看
----------------------------------
最近在学习Java,接触了
多态的概念,用了好久才
搞懂,来给大家分享一下
博主的想法;
----------------------------------
多态,就是指一个对象在
不同时候体现出来的不同
状态;
----------------------------------
多态的实现要有3个前提:
1.要有继承关系;
2.要有方法重写;
3父类引用指向子类对象;
即 父 f = new 子();
----------------------------------
多态的成员访问特点:
1.成员变量:
编译看左边,运行看左边;
2.静态成员变量:
覆盖父类的值;
3.构造方法:
创建子类对象的时候,访问父类的构造方法,对父类的数据初始化;
4.成员方法:
编译看左边,运行看右边;(即父类和子类都有该方法,否则就报错,运行时是调用用子类的方法)
5.静态成员方法:
编译看左边,运行看左边;
----------------------------------
总结:
只有重写后才会使用子类
的方法;静态方法与类有
关(通过类名加“.”访问)
,算不上重写,所以父类的
静态方法不会被覆盖;成
员变量和静态成员变量不
存在重写,所以不会被覆盖;
所以只有成员方法才会调
用子类的方法。
----------------------------------
下面给出一个实例来说明:
------------------------------
上面就是我对多态的理
解,如有错误,欢迎大
家指正;感谢阅读;
------------------------------
最近在学习Java,接触了
多态的概念,用了好久才
搞懂,来给大家分享一下
博主的想法;
----------------------------------
多态,就是指一个对象在
不同时候体现出来的不同
状态;
----------------------------------
多态的实现要有3个前提:
1.要有继承关系;
2.要有方法重写;
3父类引用指向子类对象;
即 父 f = new 子();
----------------------------------
多态的成员访问特点:
1.成员变量:
编译看左边,运行看左边;
2.静态成员变量:
覆盖父类的值;
3.构造方法:
创建子类对象的时候,访问父类的构造方法,对父类的数据初始化;
4.成员方法:
编译看左边,运行看右边;(即父类和子类都有该方法,否则就报错,运行时是调用用子类的方法)
5.静态成员方法:
编译看左边,运行看左边;
----------------------------------
总结:
只有重写后才会使用子类
的方法;静态方法与类有
关(通过类名加“.”访问)
,算不上重写,所以父类的
静态方法不会被覆盖;成
员变量和静态成员变量不
存在重写,所以不会被覆盖;
所以只有成员方法才会调
用子类的方法。
----------------------------------
下面给出一个实例来说明:
public class DuoTai { public static void main(String[] args) { Fu f = new Zi();//fu,zi //这里是多态 System.out.println(f.num); //100(fu的值) System.out.println(f.a); //300(fu的值) //System.out.println(f.b); //不能访问子类独有(父类没有)的成员变量;ERROR f.method(); //child //动态成员方法 f.fun(); //Fu //静态成员方法 System.out.println(); Zi z = new Zi();//fu,zi //这里是普通的对象创建方法 System.out.println(z.num); //200(zi的值) System.out.println(z.a); //400(zi的值) System.out.println(z.zi); //500 z.method(); //child z.fun(); //Zi System.out.println(); Fu m = new Fu();//zi //这里是普通的对象创建方法 System.out.println(m.num); //100(fu的值) System.out.println(m.a); //300(fu的值) m.method(); //father m.fun(); //Fu } } class Fu{ public int num = 100; //fu的成员变量 public static int a = 300; //fu的静态成员变量 public Fu(){ //fu的构造方法 System.out.println("fu"); } public void method(){ //fu的成员方法 System.out.println("father"); } public static void fun(){ //fu的静态成员方法 System.out.println("Fu"); } } class Zi extends Fu{ public int num = 200; //zi的成员变量 public static int a = 400; //zi的静态成员变量 public int b = 500; //zi的成员变量(独有的) public Zi(){ //zi的构造方法 System.out.println("zi"); } public void method(){ //zi的成员方法 System.out.println("child"); } public static void fun(){ //zi的静态成员方法 System.out.println("Zi"); } }
------------------------------
上面就是我对多态的理
解,如有错误,欢迎大
家指正;感谢阅读;
------------------------------
相关文章推荐
- java多态的理解
- java提高篇(四)-----理解java的三大特性之多态
- java中对多态的理解
- JAVA多态的理解
- JAVA多态理解(包含他人经典例子)
- java提高篇(四)-----理解java的三大特性之多态
- java多态的静态绑定和动态绑定的理解
- 理解JAVA的三大特性之---多态
- 理解Java多态
- 理解JAVA多态
- java提高篇-----理解java的三大特性之多态
- 如何理解和应用Java的多态 推荐
- java提高篇(四)-----理解java的三大特性之多态
- 理解JAVA多态
- java多态的理解及深入认识
- JAVA多态的理解
- java提高篇(三)-----理解java的三大特性之多态
- java提高篇(三)-----理解java的三大特性之多态
- Java基础中 多态 的理解
- Java 继承与多态的深入理解