java基础学习菜鸟入门学习第九天——java面向对象(二)构造器、this用法

Java基础知识——构造器

3.7构造器

3.7.1什么是构造器?
  • 构造器就是在java代码中用来产生对象的特殊方法,将该方法称之为该类的一个构造器。
3.7.2构造器的规则和使用方法
i.构造器的格式
public 类名(){
		构造器内的执行语句;
}
ii.书写构造器的规则
  • 构造器的方法名称和类名相同(首字母一定要大写)
  • 使用new+类名,创建一个新的对象
  • 该方法没有返回值
iii.构造器的注意事项
  • 默认在任意一个类中,如果不存在任何构造器,那么java会填充一个空参数的构造器
public class CatTest{
	public static void main(String[] args){
		CatTest cc=new CatTest();
   		//默认存在一个空参数构造器,这个构造器一般可以省略不写,可以直接调用   
    	public CatTest(){
        
    	}
	}
}
  • 对于带参数构造器来说,如果一个类中存在带参构造器,那么默认存在无参构造器如果不显示编写,则不存在。如果显示编写,则仍然存在,我们可以在代码中看到
  • 构造器也存在重载。
public class Children{
	String name;
    int age;
    int weight;
	char gender;
    //默认的空参数构造器
    public Children(){
        
	}
    //带参数的构造器
	public Children(String yName){
		name=yName;
	}
    //普通方法
	public void cry(){
        System.out.println("男人哭吧哭吧不是罪");
	}
}
public class ChildrenTest{
	public static void main(String[] args){
		//创建对象
		Children ch1=new Children();
		System.out.println(ch1.name);
		Children ch2=new Children("小邬");
        System.out.println(ch2.name);
		Children ch3=newChildren("小李",1,8,'男');
        System.out.println(ch3.name+","+ch3.weight);
	}
}
iiii.内存分析

构造函数分析图.PNG

3.8this关键词

3.8.1this关键词的作用
  • 在类的方法定义中使用this关键词代表使用该方法的对象的引用(也可以把this看成一个变量,它的值是当前对象的引用)
  • 使用this可以处理方法中成员变量和参数列表中变量重名的问题
3.8.2this关键词用法分类
  • this关键词一共两种用法:this.this()
i。this.用法
  • 代表的是当前对象的引用(谁在调用谁就是当前对象)
  • 使用this.可以处理方法中成员变量和参数列表中变量重名的问题
  • 有些地方的this.可以省略,除了用于区分区分成员变量和参数列表重名的情况
public class Dog{
	String name;
    int age;
    public Dog(){
        //同一个类中方法中调用普通方法,可以省略this.,改成run();
		this.run();
    }
	public Dog(String name){
        //name=name;这样的写法是错误的,JVM不会区分,造成赋值失败,这个this.不能省略
		this.name=name;
		this.run();//此处this.可以省略
    }
	public void run(){
        System.out.println(this.name+"正在run");
	}
}
public class DogTest{
	public static void main(String[] args){
		//1:创建小狗对象
		Dog d=new Dog();
        //调用了空参数的构造器
        /2:创建对象调用带擦构造器
		Dog dog=new Dog("小李");
	}
}

this.PNG

ii.this()用法
  • 用来实现构造器之间的互相调用
public class Dog{
	String name;
    int age;
    public Dog(){
    	//通过this()调用了带一个参数的构造器,并传入被调参数构造器相应参数列表的值
		this("101");
	}
	public Dog(String name){
		this.name=name;
	}
    public Dog(String name,int age){
        //先执行构造函数中this()的调用构造函数的初始化
		this(name);
		this.age=age;
		System.out.println("名字为:"+name+"年龄"+age);
	}
	public void run(){
		System.out.println(this.name+"正在run");
		//this();编译报错
	}
}
public class DogTest{
	public static void main(String[] args){
		//1:创建小狗对象
		Dog d=new Dog();
        //调用了空参数的构造器
        /2:创建对象调用带擦构造器
		Dog dog=new Dog("小李");
        Dog do=new Dog("小红",23);
	}
}

this()使用注意事项:

  • this()用来实现构造器之间的互相调用

  • 构造函数之间的调用只能通过this()语句来完成

  • 其它不同方法中无法使用this(),this()只能在构造器中使用

  • this()在构造器中实现构造器的互相调用时,必须要保证在构造器的第一行语句。

  • 调用构造器要先执行,如果构造器方法中当中还有初始化,那就去执行更细节的初始化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

QZP51ZX

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值