构造方法、this关键词


构造方法

语法格式:【public】类名(【参数】){ }

  构造函数无返回值,不用写也不能写void,最多用public、protected、private修饰就可以了

  类的构造方法和普通方法一样可以进行重载。

普通方法是这样调用的:

  方法修饰符中有 static 的时候:类名.方法名(实参列表);

  方法修饰符列表中无 static 的时候:引用.方法名(实参列表);

构造函数的作用:

 1.创建对象依赖构造函数

  一个类没有手动写任何构造函数,也会有一个构造函数(默认的,隐式的,无参的),为了满足创建对象的依赖;
  一个类如果手动写了构造函数,就不会再生成那个(默认的,隐式的,无参的)构造函数了;
  一个类如果写了有参构造,建议把无参构造也写出来!

 2. 给属性初始化

public class Student {
    String stuID;
    String name;
public Student(){ System.out.println("我是无参构造。。。");} public Student(String stuID1,String name1){ stuID=stuID1; name=name1; } }
//无参也可以给属性初始化(了解即可!) public Student(){ stuID="0x112"; name="孙权"; }

设置带有参数的构造方法作用是为了给成员变量做初始化

使用带有参数的构造方法

这时我们试着去使用无参数的构造方法

发现已经使用不了了

通过以上的测试,得出这样一个结论(这是java 中语法的规定,记住就行):当一个类没有显示的定义任何构造方法的时候,系统默认提供无参数构造方法,当显示的定义构造方法之后,系统则不再提供无参数构造方法。无参数构造方法又叫做缺省构造器,或者默认构造方法。

-------------------------------------------------------------

 this关键词

this:当前对象
类的非static方法中使用this,表示当前对象,这个方法被哪个对象调用,this就是哪个对象!

 上面例子中,在fun()方法中使用了this,当p1调用fun()方法时,this就是指对象p1了。

  • this在构造函数之间的调用:

语法:this(【实参】);   必须在第一行! 

构造函数中没有递归,也不能相互调用,影响创建对象!

构造函数可以直接调用非构造函数!

public class Animal {
    public Animal(){
        this(20);    //调用有参构造,必须放首行
        System.out.println("我是无参构造。。。");
    }   
    public Animal(int a){
        this.fun1();   //可调用非构造函数     
        System.out.println("我是有参构造。。。"+a);
    }
    public void fun1(){
        System.out.println("fun1...");
    }
}


package cn.bjpowernode.javase01.day10.thisdemo03;
public class TestAnimal {
    public static void main(String[] args) {
        Animal a1 = new Animal();
    }
}
  • 构造函数之间调用的意义?

    无参构造去调用有参构造可以,提高代码的重复利用率!

    不要同时相互调用。

 

public class Cat {
    String name;
    int age;

    public Cat(){
//     this.name="咖啡猫";
//     this.age=3;
       this("咖啡猫",3);
    }

    public Cat(String name,int age){
        this.name=name;
        this.age=age;
    }
}

 

相关