1、java中除了static和final方法(private方法默认是final的)之外,其他所有的方法都是后期绑定(运行时绑定)
private方法、static方法、final方法、构造器,都是静态绑定
2、java方法(除static和final)是后期绑定,若有Circle extends Shape,且Shape中有draw(),Circle也重写了draw(),那么,Shape s = new Circle()时,s.draw()调用的是Circle的draw()
但是,如果Shape中draw()是private,Circle中draw是public或private,那么s.draw()调用的是Shape的,因为private默认是final的,那么Circle中的draw()是一个新的方法而不是继承来的
注:若把draw()换成数据成员,如int field,那么s.field将是Shape的,任何域访问操作都将由编译器解析,不是多态的
3、抽象类并不需要所有方法都是抽象的,但一旦有抽象方法,那么这个类必定是抽象类
接口可以看作是一个完全抽象的类,也就是所有方法都是抽象的,更高层目标是多继承
4、接口中的域默认是static final,接口中的方法默认是public
5、使用接口的核心原因:为了能够向上转型为多个基类型
第二个原因:防止客户端程序员创建它的对象
注:如果要创建不带任何方法定义和成员变量的基类,应该选择接口而不是抽象类。
实事上,如果知道某事物应该成为一个基类,那么第一选择应该是使它成为接口。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
6、变量的声明最好尽可能靠近第一次使用的地方
7、java中常量,用final修饰,类常量用static final,变量名通常大写,多个词可用下划线
8、&&和||是短路的逻辑运算符,&和|是位运算符
9、Math类中有很多数学函数(在包java.lang.Math中)