JAVA核心技术 第四章 类与对象 第二部分

4.4.4 工厂方法

1.静态方法

  • 无法命名构造器。
  • 当使用构造器时,无法改变所构造的对象类型。

4.5 方法参数

1.方法参数的类型

  • 基本数据类型(数字,布尔值)
  • 对象引用

2.重点:在JAVA语言中,对于方法参数中的对象引用,实际上是将对象引用进行拷贝,然后再拷贝的基础上进行操作。
eg:

public  static void swap(Employee x,Employee y)
    {
        Employee temp=x;
        x=y;
        y=x;
    }
  • 这里并不能实现x与y的交换,因为x和y是拷贝的引用副本,在方法执行完毕后就会消失。
  • 实际上,对象引用是按值传递的。

4.6 对象构造

4.6.1 重载

  • 多个方法,有相同的名字,不同的参数,便产生了重载。
  • 返回类型并非方法签名的一部分,同名且同参数的方法,不能因为返回值不同而认为重载。

4.6.2 无参数的构造器

  • 仅当类没有提供任何构造器的时候,系统才会提供一个默认的构造器。如果在编写类的时候,给出了构造器,则(如果需要默认构造器)必须自己实现。

4.6.2 显示域初始化

  • 在调用构造器之前,先进行赋值操作。(当一个类的所有构造器都希望将相同的值赋值给某个特定实例域时,十分有用)。
 public static class Employee{
        private static int nextId;
        private int id=assignId();
        private static int assignId()
        {
            int r=nextId;
            nextId++;
            return  r;
        }
    }

在C++中,不能直接初始化类的实例域。所有的域必须在构造器中设置。但是有一个特殊的初始化列表语法,如下所示


Employee::Employee(String n,double s,int y,int m,int d)
:name(n),salary(s),hireDay(y,m,d)
{
    
}

4.6.6 调用另一个构造器

  • 如果构造器的第一个语句形如(this(…)),这个构造器将调用另一个同类的构造器。
  • 采用这样的this关键字非常有用,这样对于公共的构造器代码部分只编写一次就行。

4.6.7 初始化块

  • 第三种初始化数据域的方法,不常用。

4.6.8 finalize(对象析构)

  • 不常用

你可能感兴趣的:(Java基础知识)