您的位置:首页 > 编程语言 > Java开发

Java中多态的理解

2017-08-30 08:12 274 查看
----------------------------------

最近在学习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");
}
}


------------------------------

上面就是我对多态的理

解,如有错误,欢迎大

家指正;感谢阅读;

------------------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: