java中多态的详解
来源:互联网 发布:黄鹤tv 武汉网络电视 编辑:程序博客网 时间:2024/06/01 10:38
java中的多态分为两种
1方法的多态(严格意义上这不算,但为了帮助新手理解多态,此处归为多态)
方法的多态体现为,同一个类中有同名的方法,但是方法的参数类型,或参数个数不同,在实际调用的时候,会根据参数类型或参数个数找到对应的方法,这其实就是java方法的重载。
2引用多态
(1)多态的前提
A 要有继承关系
B要有方法重写
C要有父类引用指向子类
多态的代码体现
class Fu{ public int age = 35; public void show(){ System.out.println('fu'); } public static void run(){ System.out.println('我跑的快'); } } class Zi extends Fu{ // 继承 public int age = 10; public void show(){ // 方法重写 System.out.println('zi'); } public static void run(){ System.out.println('我跑的慢') } } Fu f = new Zi(); // 父类引用指向子类
小插曲:
虽然Fu类的静态方法 run() 只能被Zi类的静态方法 run() 重写,但这实际上根本不叫重写,子类的静态方法,不会覆盖父类的静态方法,因为静态方法是属于类的,而不是属于对象的。
(2) 多态中的成员访问特点
编写一个测试demo
class testDemo{ public static void main(String[] args){ Fu f = new Zi();System.out.println(f.age);System.out.println(f.show());System.out.println(f.run()); }}
如果用指向父类的引用 f 访问了 Fu 类中没有的 成员变量 成员方法 静态方法 在编译阶段 都将报错
而我们发现,父类的成员方法在被子类重写之后,虽然 f 是指向 Fu 类的引用,但是访问的却是 Zi 类
中对应的 show() 方法,所以总结如下:
Fu f = new Zi(); //左(Fu) 右(Zi)
成员变量:
编译看左边,访问看左边
构造方法:
创建子类对象的时候,会访问父类的构造方法,对父类的数据进行初始化
成员方法:
编译看左边,访问看右边(若子类对父类的方法进行重写,则会把父类中对应的方法覆盖,会访问到子类的方法)
静态方法:
编译看左边,访问看左边
1 0
- java中多态的详解
- java的运行机制详解
- java的运行机制详解
- Java Object的详解
- java的synchronized详解
- java反射的详解
- java异常的详解
- java注解的详解
- Java的StringBuffer详解
- Java枚举的详解
- Java的static详解
- JAVA的堆栈详解
- JAVA的堆栈详解
- java concurrentHashMap 的详解
- java的enum详解
- Java内存空间的详解
- Java的String详解
- 【Java的String详解】
- Mysql常用命令
- 欢迎使用CSDN-markdown编辑器
- 抽象类和接口的区别
- WCF实例与并发的一些测试
- 第一章绪论上机实验题1-1输出素数
- java中多态的详解
- css position(2)
- CQUOJ B. 粥可赛艇
- nyoj 73 比大小
- 360笔试编程题之第二题
- Android APK反编译就这么简单 详解(附图)
- 2016微软开发者大会 - 简洁收集
- 接口 介绍
- spriingmvc(三)关联到controller