1:组合
即将对象引用 置于新类中
2:继承
当创建一个类时,总是在继承,它们对Object继承
为了继承一般都把所有的成员指定为private,将所有方法指定为public
继承的初始化:
继承并不只是复制基类的接口,当创建一个导出类对象时,该对象已经包含一个基类对象,被包装在导出类对象内部
super(int i); //初始化带宽参数的构造方法,放在其它构造方法的第一行
3:代理
在类内部创建私有对象(是它的类成员变量)
通过方法调用持有对象的方法
4:名称屏蔽
子类中可以重载父类中的方法
@Override表示方法不能重载
5:protected关键字
表明,就类用户而言,它是pviate,但对于子类它又是包访问权限
6:向上转型
子类是父类的一个超集,它可以含有比基类更多的方法,所以是安全的
组合与继承的取舍
使用继承最有力的判断是,需不需要从子类向父类转型
7:final关键字
可用范围:数据,方法,类
1)数据:
在java中,类常量必须是基本类型,并且以关键字final表示,定义时必须进行赋值(不是初始 化 ,可以在运行时赋值),
对于引用是final的,表示引用不可变,但引用的对象自身可变 //引用不能再次指定新一对象
空白final:可以不对final类成员初始化;
2:在构造方法中初始化
final参数(方法中的参数是final的):你无法在方法中更改参数引用所指向的对象
2)方法:
2:效率(内嵌调用,消除方法调用开销)
类中所有private方法都隐式指定为final的
3)类:
final类禁止继承。
忠告:将方法指明为final,是明智的(防止其它人覆盖你的方法)
8:初始化及类加载
每个类的编译代码都存在于它自己的独立文件中,该文件只在需要使用程序代码时才会被加载,定义为static的代码只会加载一次
继承与初始化:
1):加载main类
2):有父类则加载父类(父类还有父类,就加载父类的父类)
3):先加载父类的static方法,在加载子类的static
4):初始化所有基本类型字段与引用
5):调用父类构造方法,调用子类构造方法
6):其它