7 复用类

来源:互联网 发布:如何找淘宝达人推广 编辑:程序博客网 时间:2024/06/14 00:24

7 复用类

7.1 组合

初始化对象引用的四个位置
1. 在定义对象的地方,意味着成员对象在构造器调用之前初始化
2. 在类构造器中
3. 在使用这种对象之前,这种方法称为惰性初始化
4. 实例初始化

7.2.1 初始化基类

当创建一个子类的实例对象时,也同时创建了一个基类的对象,不过这个对象被包装在子类的内部,为了正确的创建基类子对象,需要在子类构造器中调用基类构造器来执行初始化。java会自动在导出类的构造器中插入对基类构造器的调用。

带参数的构造器
如果没有默认的基类构造器或者需要调用带参数的基类构造器时,就必须使用super关键字显示的编写调用基类构造器的语句。

7.3 代理

代理的本质就是组合,或者可以理解为在继承之前先组合一个类作为子类的代理父类

7.6 protected关键字

protected指明:对于类用户,这个方法或者属性是是private的,但对于此类的导出类或者同一个包中的其他类,它是可以访问的。

7.7 向上转型

向上转型的本质可以用一句话解释,“新类是现有类的一种类型”(Type)。
尽管java没有type关键字,但用type来解释向上转型是十分有效的,例如,Men类和Women类都继承自Human类,那么Men和Women对象都可以说可以说是Human Type的,所以一个Human句柄可以指向一个Men对象。接口也可以看做一种Type。

7.8 final关键字

  1. final修饰基本数据类型,在定义的时候必须进行赋值
  2. final修饰对象引用表明此引用指向的对象的途径不可更改,但不代表被指向的对象不可更改
  3. 既是static又是final的域只能占据一段不能被改变的存储空间
  4. 不能因为某数据是final的就认为在编译时可以知道它的值

空白final

final域的赋值可以等到在构造器中进行

final参数

如果参数类型是基本类型且被指明为final,则只能读参数无法修改参数。这一特性主要用来向匿名内部类传递数据。

7.8.7 final方法

final修饰方法可以把方法锁定,防止任何继承类修改它的含义。

类中所有private的方法都隐式的指定为final的

7.8.8 final类

类被定义为final表明类不允许继承

7.9.1 继承与初始化

  • 加载类的动作仅执行一次
  • 类的代码在两种情况下被加载 1 创建类的第一个对象时 2 访问类的static域或者static方法时,当然,定义为static的东西只会被加载一次

加载顺序

  1. 加载器在类的.class文件中寻找类的编译代码,如果发现此类还有基类,那么就对基类进行加载
  2. 找到根基类后进行static初始化,从根基类开始依次执行
  3. 此时,所有类都加载完毕,可以创建对象了
  4. 首先,对象中所有基本类型被设为默认值,对象引用设为null,然后调用基类构造器(可能是自动调用,也可能是使用super关键字显式调用),从基类构造器往下一步步指向,实例变量也就按序初始化
0 0
原创粉丝点击