Java构造方法

这篇博客将会解答以下几个问题:

1、普通方法和构造方法的区别
2、构造方法在什么时候会给调用?
3、每个类都有一个默认的无参的构造方法,重新定义构造方法后,原来的无参构造方法会被替代
4、方法重载是什么?它和方法重写的区别?
5、this的用法

一、普通方法和构造方法的对比

格式

普通方法

public+返回值类型+方法名(参数类型 参数名,……){
	方法体
}

构造方法

public+方法名(必须与类名同名)(参数类型 参数名,……){
	方法体
}

从以上对比我们可以看出,构造方法没有返回值,但普通方法必须要有返回值(void代表空返回值,空返回值也是返回值),且构造方法的方法名必须与类名同名

用法

构造方法是用来创建类的对象的方法
比如说我现在创建了一个Student类,并创建了一个新的构造方法,传入学生的名字和分数作为参数。

public class Student{
	public String name;
	public int score;
	public Student(String name,int score){
		this.name=name;
		this.score=score;
	}
}

下面我用Student类创建了一个名叫李华,分数为88的对象。

Student lh=new Student("lihua",88);

等号后面的 new Student(“lihua”,88) 就是在调用构造方法,可以看出,构造方法的作用是创建类的对象,并且可以在创建对象的同时设置对象的初始属性

而普通方法的作用是在方法体中进行一定的操作和运算,并返回一个返回值。

二、默认的无参构造方法

我们在编写代码的过程中会发现,创建类的时候并不一定要在类中编写构造方法,这是因为每个类都有一个默认的无参的构造方法,但当我们重新定义构造方法后,原来的无参构造方法就会被替代

比如说在上述的Student类中,我们只写入了一个构造方法Student(String name,int score),那么原来的Student()就被替代了,此时若要创建新的Student对象便不能使用 Student lh=new Student()该语句。

但如果我们想同时保留有参数和没有参数的构造方法,可以使用方法重载,在下面将会讲到。

三、方法重载

想要更好理解方法重载,我们可以与之前学过的方法重写进行对比。

1、方法重写一定发生在子类继承父类时,在子类中编写与父类中同名的方法;方法重载只发生在一个类的内部,与原方法同名但参数类型或参数个数不相同。

2、方法重写后原来的方法被覆盖,子类对象只能调用重写后的方法;方法重载可以用于编写多个构造方法,且可以通过传入不同参数调用不同的方法。

比如在以下这段代码中,就可以使用三种构造方法创建对象。可以使用无参构造方法Student()创建对象,并且不设置初始值;也可以使用Student(String name,String gender)创建对象,并设置对象的姓名和性别初始值;也可以使用Student(String name,int score)创建对象,并设置对象的姓名和分数初始值。

public class Student{
	public String name,gender;
	public int score;
	public Student(){
	}
	public Student(String name,String gender){
		this.name=name;
		this.gender=gender;
	}
	public Student(String name,int score){
		this.name=name;
		this.score=score;
	}
}

四、this的用法

在上述举例的代码中,我们多次使用了this,this代表本类对象,或者说指向当前调用的对象。比如说我用Student lh=new Student()创建了一个对象lh,那在这里this代表的就是lh这个对象;如果创建的是其他对象,那this就代表创建的其他对象。

这里使用this是为了区分变量和参数
this.变量名=参数名;
变量是在类中创建的变量,参数是通过构造方法传入的参数。

五、构造方法应用实例

创建Shape类用于保存画板中的图形

public class Shape {
	public int xa,ya,xb,yb;
	public String name;
	public Color c;
	
	//保存图形的左上角坐标xa,ya和右下角坐标xb,yb,以及图形的名字、图形的颜色
	public Shape(int xa,int ya,int xb,int yb,String name,Color c){
		this.xa=xa;
		this.ya=ya;
		this.xb=xb;
		this.yb=yb;
		this.name=name;
		this.c=c;
	}

创建shape类是为了收集界面中的图形,然后重写JFrame的paint方法,使得每次重绘窗口的时候再重绘这些图形,从而达到保留笔迹的效果。具体实现方法将在下一篇博客讲到。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值