thinking in java 笔记

1,多态,向上转型:解决的办法是后期绑定,它的含义就是在运行时根据对象的类型进行绑定。后期绑定也叫动态绑定或运行时绑定。

java中除了static方法和final方法,(private方法属于final方法)之外,其他所有的方法都是后期绑定,这意味着通常情况下,我们不必判定是否应该进行后期绑定--它会自动发生。final方法可以有效地“关闭”动态绑定,但是这样做对程序的整体性能不会有什么改观。

2,如果父类的一个方法的private,子类继承父类,当 Father f = new Child();f.method()时,调用的将是父类的方法,而非是子类的方法,因为private方法被自动认为是final方法,而且对导出类是屏蔽的,因为method()在子类中就是一个全新的方法

3,当Sub对象转型为Super引用时,Super sup=new Sub();任何域访问操作都将由编译器解析,因此不少多态的。所以sup.field访问的将是父类的变量,而不是子类的变量。子类Sub包含两个域,this.field和super.field,默认是this.field。

如果某个方法是静态方法,它的行为就不具有多态性,静态方法是与类,而并非与单个对象相关联的

4,构造器不具备多态性,它实际上是static方法,只不过该static是隐式的,比如说构造方法中可以存放静态变量,只有静态方法中才可以使用静态变量。

5,静态成员的初始化只有在必要的时候才会进行,它优先于非静态成员的初始化、构造方法、普通方法。

非静态成员的初始化优先于构造方法和普通方法,并没创建一次对象就会初始化一次

静态块的初始化并非程序一启动就执行,而是用到的时候才执行:当首次生成这个类的一个对象时,或者首次访问属于那个类的静态数据成员时。

实例化块执行的条件是必须有该类的对象被创建。实例化快的执行优先于构造方法。并且每创建一次对象,都会执行实例化块一次。

继承子类父类的多级初始化:

1)调用基类构造器。 2)按声明顺序调用成员的初始化方法。 3)调用导出类构造器的主题。 父类的构造方法调用顺序优先于本类的变量初始化顺序。

6,抽象类可以有构造函数,因为在继承的时候需要调用父类的构造函数。接口不能有构造函数,抽象类和接口都不能被实例化。

7,接口:1)只有public和包访问权限。 2)变量隐式的是public static final。 3)方法默认是public。






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值