多态中类成员调用时的特点
来源:互联网 发布:淘宝首页添加视频代码 编辑:程序博客网 时间:2024/06/05 09:25
先看下面的代码:
class Fu
{
int age = 5;
public void method1(){
System.out.println("fu method1");
}
public void method2(){
System.out.println("fu method2");
}
}
class Zi extends Fu
{
int age = 8;
public void method1(){
System.out.println("zi method1");
}
public void method3(){
System.out.println("zi method3");
}
}
public class a
{
public static void main(String aegs[]){
Zi zi = new Zi(); //没有多态的情况
zi.method1();
zi.method2();
zi.method3();
}
}
运行结果是什么?
在看有多态的情况一:
public class a
{
public static void main(String aegs[]){
Fu fu = new Zi();
fu.method1();
fu.method2();
fu.method3();
}
}
运行结果是:编译失败
情况二:
public class a
{
public static void main(String aegs[]){
Fu fu = new Zi();
fu.method1();
fu.method2();
}
}
运行结果是:zi method1 fu method2
先说情况一,用父类的引用去调用method3,Fu类中并不存在这个方法,编译失败。
情况二,父类的引用指向的是子类对象,在内存中存在的是子类对象,method1被子类覆写过,运行结果是zi method1。
总结:
成员函数在多态调用时的特点
编译时期:参阅引用型变量所属的类是否有该方法。
运行时期:参阅对象实例所属的类。
编译看左边,运行看右边。
下面在来看看成员变量的特点:
public class a
{
public static void main(String aegs[]){
Fu fu = new Zi();
System.out.println(fu.age);
}
}
输出结果是:5
因为在new Zi()的时候,会先实例化父类的实例,那么成员变量已经存在内存中了。
多态中成员变量的调用,编译和运行都看左边。
- 多态中类成员调用时的特点
- JAVA多态机制中,成员调用的特点
- 接口的成员特点
- 静态成员的特点
- 接口的成员特点
- 多态时,成员的特点
- 子父类中成员的特点
- 多态中成员的特点
- java之多态调用成员变量,成员函数,静态函数的特点
- JAVA 多态中成员的特点
- 多态中成员函数的特点
- Java多态中成员的特点
- 多态中成员访问的特点
- 多态成员的特点
- 多态的成员的特点
- 多态中函数、成员、静态函数的特点
- 面向对象(多态中成员的特点)
- java多态类的成员访问特点探究
- 浅谈json
- (转)浅谈Android五大布局——LinearLayout、FrameLayout、AbsoulteLayout、RelativeLayout和TableLayout
- java上传文件工具类
- ubuntu软件安装以及卸载
- cmd命令查看端口被某程序占用
- 多态中类成员调用时的特点
- 让git diff/merge使用meld等GUI对比工具
- linux 下vi编辑命令
- Oracle Merge语法使用记录
- sprintf 自动追加'\0'字符
- 整数的所有分割数目
- JSF入门实例
- 使用ibatis向数据库中插入数据时的主键处理
- Apache加载php模块