java 重载:子类父类 与 多态动态绑定静态重载
来源:互联网 发布:程序员考试资料 编辑:程序博客网 时间:2024/06/06 04:30
问题:
子类能否重载父类的类型?
答:
完全可以,先看一个例子,接下来会有另一种情况
public class Son extends Father{
public void test(int i){
System.out.println("This is from Son class and the number is " +i);
}
public static void main(String args[]){
Son son = new Son(); //////这里要注意,接下来在这里做文章会发生改变
son.test();
son.test(1);
}
}
class Father{
public void test(){
System.out.println("This is from Father class");
}
}
输出结果为
This is from Father class
This is from Son class and the number is 1
那么这是可行的。现在书上说,重载是静态编译时完成的,与动态时的重写确定方法不同,那么我就用父类来绑定子类调用方法来试验一下什么时候子类重载父类的方法可以成功。
class TestSon extends Test{
protected void fun(int i) {
System.out.println("Son!");
}
}
publicclass Test {
protectedvoid fun(){
System.out.println("Father!");
}
publicstatic void main(String[]args) {
Test t = new TestSon();
t.fun();/////////////////////////////////////////////这里体现”静态“的关键,体现在两点:1.eclipse开启了自动提示时,仅仅有一个fun()的选项,而fun(int)的选项没有。2.这里静态编译时,t是Test类型,并且编译时仅仅通过寻找重载的可能来确定调用哪一个函数,而重写调用什么函数是动态时确定的,所以这里仅仅判断Test类中写了重载没有,一查找,发现没有,所以确定调用的函数是父类的fun。这里在静态时已经确定使用什么函数了,所以动态时就再没有二次确定,所以子类“重载”没能成功。
TestSon t = new TestSon();
t.fun();
t.fun(1);//////////////////////////////////////这里就能够成功,是因为在静态编译时在声明的类TestSon中寻找,发现有父类的fun与子类重载的fun两个,然后根据函数传递参数类型确定调用哪一个函数。
}
}
这里涉及到多态的jvm实现方式,静态确定在哪一个类中重载哪一个方法,动态确定到底是哪一层的方法,是子类的重写还是父类。
- java 重载:子类父类 与 多态动态绑定静态重载
- Java重写与重载、静态绑定与动态绑定
- java 子类重载父类
- Java中的重载、重写、多态,静态绑定、动态绑定
- Java中的重载、重写、多态,静态绑定、动态绑定
- Java之重载,隐藏,静态绑定,动态绑定
- Java父类引用指向子类对象静态绑定和动态绑定问题
- Java动态类加载与重载
- Java 动态类加载与重载
- 黑马程序员——方法覆盖、重载 、多态与动态绑定
- 【Java Learning】重载、多态和动态绑定——Overloading、Ploymorphism&Dynamic binding
- 子类与父类,以及子类的继承,重载与重写。
- 子类重载父类的虚函数
- 子类、父类之间实现函数重载
- c++ 子类“重载”父类的方法
- java的动态绑定与静态绑定
- java的动态绑定与静态绑定
- java的动态绑定与静态绑定
- iOS开发(第三方使用)——百度地图的简单使用(定位与当前位置的显示)
- 类目 非正式协议 与 延展
- jni应用(*isCopy 返回的说明)
- Java NIO:NIO概述
- unity - 优化你的游戏
- java 重载:子类父类 与 多态动态绑定静态重载
- listen()的backlog参数和未完成队列、已完成队列的关系
- JS中&&和||用法
- 国际化:redhat7 如何设置系统语言
- hdu 1575 矩阵快速幂
- codeforces 484E Sign on Fence 可持久化线段树+二分查找
- javaMail实现发送邮件
- 12 小球问题
- 点击图片浏览大图(sui框架)