博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
父类引用指向子类对象 调用函数常见问题
阅读量:5141 次
发布时间:2019-06-13

本文共 976 字,大约阅读时间需要 3 分钟。

解决父类引用调用子类对象当中,引用调用函数的常见问题。该引用只能调用子类中与父类同名的函数,否则报错。

虚拟机在调用重载函数时,是通过参数的静态类型作为调用重载函数的判定依据,而不是动态类型

 

 

 

public class Dis

{
static class QQ {}

static class _360 {}

static class sqq extends QQ{}

public static class F{

public void f1(QQ arg)

{
System.out.println("F QQ");
}

public void f1(_360 arg)

{
System.out.println("F 360");
}

//public void f1(sqq arg)

//{
System.out.println("F sqq 360");
//}

}

public static class S extends F{

public void f1(QQ arg)

{
System.out.println("S QQ");
}

public void f1(_360 arg)

{
System.out.println("S 360");
}
public void f1(sqq arg)
{
System.out.println("s sqq 360");
}

}

public static void main(String[] args){

F son = new S();//son只能调用子类中与父类同名的函数,否则报错.

sqq sq = new sqq();

 

son.f1(sq);//调用重载函数时,找不到对应数据类型的重载函数,就会寻找离该数据类型最近的重载函数(自动类型转化)

//不注释父类的f1(sqq arg),打印出s sqq 360,注释父类的f1(sqq arg),打印S QQ

 

QQ qq = new sqq();

//qq 是静态类型,new sqq()是动态类型

//虚拟机在重载时,是通过参数的静态类型作为判定依据,而不是动态类型

son.f1(qq);

//打印结果是S QQ

}

}

转载于:https://www.cnblogs.com/yxjr/p/7602296.html

你可能感兴趣的文章
PHP识别二维码(php-zbarcode)
查看>>
mysql-5.7.17-winx64的安装配置
查看>>
ASP.NET小技巧:使用Escape解決但双引号引发的问题。
查看>>
C与C++的错误处理
查看>>
说话、做事、琢磨人
查看>>
Java for LeetCode 056 Merge Intervals
查看>>
谷歌地图接口,实现导航功能。
查看>>
利用T4模版生成EF实体
查看>>
【初窥javascript奥秘之闭包】叶大侠病都好了,求不踩了:)
查看>>
BZOJ4199: [Noi2015]品酒大会
查看>>
MacOS常用命令行工具
查看>>
活动已结束,日期时间比较并弹框跳转
查看>>
HDU多校(Distinct Values)
查看>>
lua table1
查看>>
nodejs 入门一(环境及插件)
查看>>
Python进阶-----类的组合
查看>>
PHP连接数据库(mysql)
查看>>
常见几种浏览器兼容性问题与解决方案
查看>>
修改 Cloud image 的密码的简单方法
查看>>
centos 下安装显卡驱动步骤
查看>>