为了复用代码,可以使用合成和继承
一。合成代码 :在类内置入对象句柄即可
赋值:如果不对对象句柄进行赋值,对象句柄会被初始化为NULL值
可以用三种方式进行赋值:
class a{
int t1 = 6;(在定义的地方赋值)
int t2;
String t3;
public a(){
t2 =5;(在构造函数中赋值)
}
public String toString(){
if(t3 == null){
t3 ="1ss";(在使用的时候才赋值)
}
System.out.print(t3);
}
}
二.继承
新类中其实封装了基础类的一个子对象,具有子对象的全部数据成员和方法,只是是否可以访问的问题
构造新类要做的第一件事是构造其基础类。如果基础类具有无参构造函数,在新类构造时系统会自动为我们调用该构造函数
但如果基类无默认构造函数或我们想调用基类的带参构造函数,则要求我们在新类的构造函数中显式的调用该带参构造函数
三。包含关系用合成表达,属于关系用继承表达
四。protected
可在同一个包中或继承该类的新类中对带有该修饰符的成员或方法进行访问
五。final
作用一:修饰常数时可以在编译时就进行赋值,从而节省运行时的开销
作用二:修饰基本类型时表明该基础类型的值不可改变 (初始化也可以动态赋值,也就是运行时才值才决定,也可以先不赋值,使用前才赋值)
修饰句柄时表明该句柄始终指向一个对象,不可改变其指向另外的对象
修饰方法时表示该方法不可被覆盖和重写,并且编译时系统可能会根据其代码量大小进行嵌入优化
修饰类表明该类不能被继承,同时该类中的方法也自带final属性
六。初始化顺序
基础类的static变量和static代码块
继承类的static变量和static代码块
基础类的构造器(实例变量会以本来的顺序进行初始化)
继承类的构造器(实例变量会以本来的顺序进行初始化)