1。组合语法composition和继承inheritance
不声明继承就默认继承Object类。与前面的单根继承对应。
成员缺省的访问权限是package。
2.在同一个java文件里面,可以存在多个main函数(在不同的类中),但是不能出现多个public类。
这样让测试单元更加清晰、容易。
main函数还可以互相调用:因为main函数是个public static void main(String[] args)。
3.super代表当前类所继承的基类
导出类构造器中的super构造器必须在第一行。
4.初始化顺序:基类、导出类
如果都是缺省构造器,那么会自动按这个顺序调用
如果是有参数的构造器,那么你必须显示调用。super(args)
5.保证正确清除
想要显式清除某样东西,可以把清除语句放在finally中
try语句块是一个guarded region(保护区),无论try块如何退出,都要执行finally中的代码
最好不要依赖垃圾处理器去做任何事,需要清楚最好写自己的方法,不要使用finalize()方法
6.同名的方法,但是参数表不同,导出类的方法不会覆盖基类的方法。
7.增量开发
8.向上转型upcasting
9.final关键字
final对原始类型运用时就是数值不变;而对对象运用时就是引用不变,但是对象可以改变。
static最主要的一点是只有一份,而且是在装载的时候就有了。装载器的forName()方法。
将final运用在对象上没有把final运用在原始类型上的作用大
将final用在空白的变量上也可以,但是必须在每个构造器中都给他赋值。
final可以用在参数列表中,代表无法修改。
final方法:1.不会被重载 2。会变为内嵌inline形式,可以省去调用方法的时间,但是会让代码变得膨胀
类中所有的private方法都被默认为final的,如果方法是private那么他就不是基类接口的一部分,你所创建的同名方法并不是重构而是完全的一个新方法。所以将导出类upcasting也无法调用基类的private方法。
final类:永远无法变动的类。无法被继承
10.类加载
先加载父类再加载子类,先创建父类对象再创建子类对象。