个人感悟 动态绑定与静态绑定
来源:互联网 发布:fedora linux镜像下载 编辑:程序博客网 时间:2024/06/16 12:03
今天在看动态代理的时候底层运用到了反射,想这可以把反射看一下,看着看着看到了静态和动态绑定,这个东西老早以前做过笔记研究,不过现在给忘了,又花了点时间研究了以下,现做个笔记。 动态绑定生于子类对象指向父类对象,即向上转型,这个东西仅仅局限于方法,局限与方法,这个是范围,属性都属于静态绑定,这个要分清楚 静态绑定和动态绑定这个怎么区分我就不说了,那个网上太多了,自己去查,这里主要讲 动态绑定 只要父类方法不是被private,static,finally修饰,别的都是动态绑定,当然父类的构造方法也是静态绑定。
对于private修饰的方法,它不能被继承,只能通过这个类自身的对象来调用。
final方法虽然可以被继承,但不能被重写(覆盖),虽然子类对象可以调用,但是调用的都是父类中所定义的那个final方法。
static方法可以被子类继承,但是不能被子类重写,父类和子类就这一个方法体,那调用的也就只有父类一个了,总不会是别的了。
对于别的方法调用就是动态绑定了,看这个歌对象具体是那个什么,然后就调用什的方法。
public class test{ public static void main(String[] args) { String str = new String(); FaCaller caller = new SubCaller(); //子类对象指向父类对象,即向上转型 System.out.println(caller.name); //静态绑定 caller.call(str); //动态绑定 //Fa 输出 //a String instance in SubCaller 输出 } static class FaCaller { public String name="Fa"; public void call(String str) { System.out.println("a String instance in Caller"); } public static void callOne(String str) { System.out.println("a String instance in Caller"); } } static class SubCaller extends FaCaller { public String name="Son"; private void syso() { this.callOne("hello");//可以看出继承的父类方法 } @Override public void call(String str) { System.out.println("a String instance in SubCaller")` } }}
就向上面的 son对象指向fa,调用的属性都是fa的,这个就是静态绑定,java在编译的时候会将son对象当作fa去编译,但是在运行的时候就会判别出是son对象,从而调用子类的方法,这个即为动态绑定。 得益于动态绑定,才有了java的多态和修饰设计模式。
阅读全文
0 0
- 个人感悟 动态绑定与静态绑定
- 静态绑定与动态绑定
- 动态绑定与静态绑定
- 静态绑定与动态绑定
- 静态绑定与动态绑定
- 动态绑定与静态绑定
- 静态绑定与动态绑定
- 静态绑定与动态绑定
- 动态绑定与静态绑定
- 静态绑定与动态绑定
- 静态绑定与动态绑定
- 动态绑定与静态绑定
- 静态绑定与动态绑定
- 动态绑定与静态绑定
- 静态绑定与动态绑定
- 静态绑定与动态绑定
- [C++]静态绑定与动态绑定
- C++的静态绑定与动态绑定
- 80,90后需要提前领悟的至高心法
- 算法导论程序40--贪心算法(活动选择问题)
- 教你快速实现Nexus刷机
- 《SQL反模式》总结
- Bootstrap基本框架
- 个人感悟 动态绑定与静态绑定
- scala多线程demo
- 数据的位运算
- swift 单例的实现
- oj 1067: 顺序排号
- Jmeter断言-响应断言
- [Leetcode] 161. One Edit Distance 解题报告
- iOS 后台播放音乐问题记录
- Android ContextThemeWrapper应用