Java面向对象程序设计

面向对象

方法重载

  1. 方法重载

    1. 定义一组方法,这些方法具有相同的名称梦之星类似的操作,但是却使用不同的参数列表
    2. 编译器会根据调用时传递的实际参数自动判断具体调用的是哪个重载方法
  2. 方法重载的三大原则

    1. 方法相同

    2. 参数不同(可以有三方面的不同)

      1. 类型不同

      2. 数量不同

      3. 顺序不同

        1. int test(int x,float y){.....}
          int test(float y,int x){.....} //构成重载
          
    3. 同一作用域

  3. 重载不考虑方法的返回值类型。若只有返回值类型不同,则不能构成方法重载。否则会出现编译错误(重复定义)。

构造方法

  1. 构造方法

    1. 从前面所学的知识发现,实例化一个类的对象后,如果要为这个对象中的属性赋值,则必须要通过直接访问对象的属性或调用setXxx方法的方式来实现。

    2. 为对象中的属性赋值:可以通过实例化对象后,通过访问对象的属性或调用setXxx方法来实现。

    3. 为对象中的属性赋值:也可以通过构造方法来实现,即在实例化对象的同时就为这个对象的属性进行赋值。

  2. 构造方法的一般形式

    1. 访问权限 方法名 (形参列表){

      方法体

      }

    2. 实例化对象的同时会自动调用构造方法,所以构造方法一般用来给数据成员分配资源或初始化数据成员;

    3. 因为是由虚拟机来调用构造方法,所以构造方法一般应定义成public。

  3. 在一个类中定义的方法如果同时满足以下三个条件,该方法称为构造方法,具体如下:

    1. 方法名与类名相同
    2. 在方法名的前面没有返回值类型的声明
    3. 在方法体中不能使用return语句放回一个值
  4. 在没有定义构造方法的情况下,类会自动产生一个无参数的默认构造方法,这个默认的构造方法什么都不做;

  5. 一旦显式地定义了构造方法,默认构造方法将自动消失

  6. 每个对象在实例化时都必须执行构造方法,而且只能执行一次

  7. 如果构造方法调用失败,那么对象也无法创建

  8. 在一个类中除了定义无参的构造方法,还可以定义有参的构造方法,通过有参的构造方法就可以实现对属性的赋值。

    1. 例如:对于封装的数据,当我们想要操作这些域变量时,可以通过两种方法:第一种即通过有参的构造方法,在对象实例化时就对变量赋值;第二种就是通过前面提到的setXxx ()和getXxx()方法对变量进行赋值。

  9. 构造方法的重载

    1. 与普通方法一样,构造方法也可以重载,在一个类中可以定义多个构造方法,只要每个构造方法的参数类型或参数个数不同即可。

    2. 在创建对象时,可以通过调用不同的构造方法来为不同的属性进行赋值。

this关键字

  1. 当成员变量和局部变量的名称发生冲突时,在方法中将无法访问成员变量。为了解决这个问题,Java中提供了一个关键字this来指代当前对象,用于在方法中访问对象的成员。
    1. 可以访问当前对象的成员变量
    2. 可以访问当前对象的成员变量
    3. 当有重载的构造方法时,用以在一个构造方法中使用this([参数1,参数2,…..])应用同类的其他构造方法.

课后练习

  1. 定义一个除法类,类中定义两个int类型的私有成员变量被除数和除数,默认值都为1。在setXxx()方法中对传入的参数进行检查,如果传入值为零,则打印“除数不能为零”,如果不为零,才将其设置为除数属性的值。