构造方法、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(【实参】); 必须在第一行!
构造函数中没有递归,也不能相互调用,影响创建对象!
构造函数可以直接调用非构造函数!
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;
}
}