构造方法

构造方法的概念

构造方法名与类名完全相同 ,并且没有返回值类型,连void都不许有

class 类名{    类名(形参列表){        构造方法体;    }}

默认构造方法

  • 当一个类中没有定义任何构造方法时, 编译器会主动增加一个无参空构造方法, 叫做默认构造方法,如: Person(){}
  • 若类中呈现了构造方法, 则编译器不再提供任何模式的构造方法

构造方法的作用

  • 应用new关键字创建对象时会主动调用构造方法实现成员变量初始化工作

案例题目

编程实现Point类的定义并向Point类增加构造方法Point()默认创立原点对象Point(int i, int j)依据参数创立点对象
public class Point{    // 无参构造方法    Point(){        System.out.println("胜利创立原点对象");    }        // 有参构造方法    Point(int j, int j){        System.out.println("该对象坐标为: (" + i + "," + j + ")");    }        public static void main(String[] args){            //应用无参构造方法创立Point类对象        Point p1 = new Point();        //应用有参构造方法创立Point类对象        Point p2 = new Point(7,4);    }}/** 程序运行的输出后果是:* 胜利创立原点对象* 该对象坐标为:(7,4)*/

办法重载

办法重载的概念

  • 若办法名称雷同, 参数列表不同, 这样的办法之间结构<u>重载关系(Overload)</u>

重载的体现模式

  • 办法重载的次要模式体现在: 参数的个数不同, 参数的类型不同, 参数的程序不同. 与返回值类型和形参变量名无关. 但倡议<u>返回值类型最好雷同</u>
  • 判断办法是否结构成重载的外围: 调用办法时是否加以辨别

练习题目

编程实现为Point类增加重载的成员办法up() - 实现纵坐标减1的性能up(int dy) - 实现纵坐标减去参数指定数值的性能测试重载办法的调用规定
public  class PointTwo {    // 自定义成员变量    int x;    int y;    // 自定义结构无参办法    PointTwo() {    }    // 自定义构造方法, 依据参数创建对象    PointTwo(int i, int j) {        x = i;        y = j;    }    // 自定义成员办法up(), 用于实现纵坐标减1的性能    void up() {        y -= 1;    }    // 自定义成员办法up(int y), 用于实现纵坐标减去参数指定数值的性能    void up(int i) {        y -= i;    }    public static void main(String[] args) {        // 创建对象, 类的实例化        PointTwo pt = new PointTwo();        System.out.println("(x, y) = " + "(" + pt.x + ", " + pt.y + ")");   // 0,0        System.out.println("----------------------------------------------");        PointTwo pt2 = new PointTwo(3,3);        System.out.println("(x, y) = " + "(" + pt2.x + ", " + pt2.y + ")"); // 3,3         System.out.println("----------------------------------------------");        pt2.up();        System.out.println("(x, y) = " + "(" + pt2.x + ", " + pt2.y + ")"); // 3,2        System.out.println("----------------------------------------------");        pt2.up(-7);        System.out.println("(x, y) = " + "(" + pt2.x + ", " + pt2.y + ")"); // 3,9    }}

重载的实际意义

  • 办法重载的实际意义在于: 调用者只须要记住一个办法名就能够调用各种不同的版本, 来实现各种不同的性能
  • java.io.PrintStream类中的println办法

this关键字

this的基本概念

  • 若在构造方法中呈现了this关键字, 则代表以后正在结构的对象
  • 若在成员办法中呈现了this关键字, 则代表以后正在调用的对象(即, 是谁调用这个成员办法, 这里的this就代表谁)
  • this关键字实质上就是以后类类型的援用变量

工作原理

  • 在构造方法中和成员办法中拜访成员变量时, 编译器会加上this.的前缀.而this.相当于汉语中“我的”
  • 当不同的对象调用同一个办法时, 因为调用办法的对象不同导致this关键字不同, 从而this.形式拜访的后果也就随之不同

应用形式

  • 当局部变量名与成员变量名雷同时, 在办法体中会优先应用局部变量(就近准则). 若心愿应用成员变量, 则须要成员变量的后面加上this.的前缀, 明确要求该变量是成员变量
  • this关键字除了能够通过this.的形式调用成员变量和成员办法外, 还能够作为办法的返回值
  • 在构造方法的第一行能够应用this()的形式来调来本类中的其它构造方法

注意事项

  • 援用类型变量用于寄存对象的地址, 能够给援用类型赋值为null, 示意不指向任何对象
  • 当某个援用类型变量为null时无奈对对象施行拜访(因为它没有指向任何对象). 此时, 如果通过援用拜访成员变量或调用办法, 会产生NullPointerException异样(即空指针异样)

办法递归调用

递归的基本概念

递归实质就是指在办法体的外部间接或间接调用以后办法本身的模式

注意事项

  • 应用递归必须有递归的法则以及退出条件
  • 应用递归必须使得问题简单化而不是复杂化
  • 若递归影响到程序的执行性能, 则应用递推取代之