美文网首页
4.6对象构造

4.6对象构造

作者: 十六只猴子王 | 来源:发表于2019-03-14 17:04 被阅读0次

    重载

    如果多个方法有相同的名字、不同的参数,便产生了重载。编译器通过用各个方法给出的参数类型与特定方法调用所使用的值类型进行匹配挑选出相应的方法,这个过侧过程叫做重载解析

    • 完整的描述一个方法需要指出方法以及参数类型,这叫做方法的签名
      例如:String类有4个称为indexOf的公有方法
      他们的签名是
    indexOf(int)
    indexOf(int,int)
    indexOf(String)
    inderOf(String,int)
    

    默认域初始化

    如果在构造器中没有显示的给域赋予初始值,就会被自动的赋值为默认值:数值为0,布尔值为:false,对象引用为null

    无参构造器

    很多类都包含一个无参构造器函数,对象由无参构造器创建时,其状态会设置为适当的默认值

    • 如果在编写一个类时没有编写构造器,那么系统就会提供一个无参构造器,这个构造器所有的实例域设置为默认值
    • 如果类中提供了至少一个构造器,但是没有无参构造器,则在构造对象时没有提供参数就会被视为不合法
    • 仅当类没有提供任何构造器时,系统才会提供一个默认的构造器

    显示域初始化

    通过承载类的构造方法,可以采用多种形式设置类的实例域的初始状态,确保不管怎样调用构造器,每个实例域都可以被设置为一个有意义的初值、

    • 初始值不一定时常量值,可以调用方法对域进行初始化
    class Employee
    {
      private static int nextId;
      private int id = assignIg();
      private static int assignId(){
        int r = nextId;
        nextId++;
        return r;
    }
    }
    

    参数名

    通常参数用单个字符命名但这样做有一个缺陷:只有阅读程序才能了解参数的含义
    可以在每个参数前面加一个前缀

    public Employee(String aName, double aSalary)
    {  name= aName;
      salary= aSalary;
    }
    

    参数变量同样的名字将实例域屏蔽起来

    • 可以用this关键字。this值是隐私参数,也就是构造器 的对象

    调用另一个构造器

    如果构造器的第一个语句形如this(...)这样的狗在其将调用另一个类的另一个构造器
    采用过这种方式使用this关键字非常有用,这样对公共的构造器代码部分只编写一次即可

    初始化块

    初始化数据有的方法:
    1.在构造器中设置值
    2.在声明中赋值
    3.初始化块

    • 调用构造器的具体处理步骤:
      1.所有数据与被初始化为默认值
      2.按照在类声明出现次序,一次执行所有域初始化语句和初始化块
      3.如果构造器第遗憾调用了第二个构造器,则执行第二个构造器的主体
      4.执行这个构造器的主体
    • 如果对象的静态域进行初始化的代码比较复杂,那么可以使用静态的初始化块
    • 将代码放在一个块中,并标记关键字static
    static{
    Ramdom generator = new Random();
    nextId = generator.nextInt(10000);
    }
    

    对象析构域finalize方法

    析构器方法:其中放置一些对象不在使用时需要执行的清理代码
    java有自动垃圾回收装置,不需要人工回收垃圾,所以java不支持析构器

    • 可以为任何一个类添加finalize方法,finalize方法将在垃圾回收器清楚队形之前调用,实际中不依赖finalize方法回收任何短缺的资源,这是因为很难知道这个方法什么时候才能调用
    • 如果某个资源需要再使用完毕后立即被关闭,那么就需要有人工来管理。对象用完时可以应用一个close方法来完成相应的清理操作

    相关文章

      网友评论

          本文标题:4.6对象构造

          本文链接:https://www.haomeiwen.com/subject/ivrcmqtx.html