java,构造方法用this作为参数调用,怎么理解?

最新java二级,2013版的,第30页有个程序,说this的引用的,最后一个构造方法看不懂,而且,那真是构造方法?看我注析。。。publicclassBirthDate... 最新java二级,2013版的,第30页有个程序,说this的引用的,最后一个构造方法看不懂,而且,那真是构造方法?看我注析。。。
public class BirthDate{
private int day=1;
private int month=1;
private int year=1900;
public BirthDate(int day,int month,int year){
this.day=day;
this.month=month;
this.year=year;
}
public BirthDate(BirthDay date){
this.day=date.day;
this.month=date.month;
this.year=date.year;
}
public BirthDate addDays(int add_days){ //这里不是构造方法吧?addDays叫什么?是不是多了一个s?
BirthDate otherDate=new BirthDate(this); //这里的this有什么作用?代表什么?
otherDate.day=otherDay=new BirthDate(this): //这里的this呢?
return otherDate; //总体来说,上面四行有什么作用?
}
}
谢谢
各位真不好意思,码字码头晕了,最后一段addDays方法这里打错了,是这样的。是全国计算机等级考试二级教程——Java语言程序设计(2013年版)第30页的。

public BirthDate addDays(int add_days){
BirthDate otherDate=new BirthDate(this); //构造方法用this作为参数调用(书原文)
otherDate.day=otherDay.day+add_days;//这里码错了,不好意思
return otherDate;

现在我就是不理解这个this是什么作用,有朋友说传入当前类的对象,当前类是指BirthDate类是吗?那当前类的对象是otherDate还是addDays方法(BirthDate类创造的addDays方法是不是它的对象?)?新手,问题也有点乱,莫见怪~
展开
 我来答
荤奇0Hg
2018-02-23 · TA获得超过309个赞
知道小有建树答主
回答量:246
采纳率:66%
帮助的人:66.8万
展开全部
我18年考,看到这里也是有点懵,虽然有点编程基础。看了大佬的解答明白了。提交这个答案为了后来人~!。。。。。
之前的this我都是懂的,但是下边这句
BirthDate otherDate=new BirthDate(this);

看了解答后了解了,this代表当前类,也就是说。。。
public BirthDate addDays(int add_days){ ...}

这个类的返回值是BirthDate,刚好可以当做
public BirthDate(BirthDay date){...}
这个类的参数。大概就是这样。这高等教育出版社这书里好多错误不说,还真这些没用的例子。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sulianchuan
2018-01-11
知道答主
回答量:2
采纳率:0%
帮助的人:2374
展开全部
package meta;
public class BirthDate {

private int day = 1;
private int month = 1;
private int year = 1900;

public BirthDate(int day ,int month,int year){
this.day = day;
this.month = month;
this.year = year;
}

public BirthDate(BirthDate date){
this.day = date.day;
this.month = date.month;
this.year = date.year;
}

public BirthDate addDays(int add_days){
BirthDate date1 = new BirthDate(this);
date1.day = date1.day + add_days;
return date1;
}

public static BirthDate addDays2(BirthDate date1,int add_days){
date1.day = date1.day + add_days;
return date1;
}

public static void printDate(BirthDate date){
System.out.println(date.year + " " + date.month + " " + date.day);
}

public static void main(String[] args) {
// TODO Auto-generated method stub

BirthDate date0 = new BirthDate(3,5,1988);
printDate(date0);

date0 = date0.addDays(7);
printDate(date0);

date0 = addDays2(date0,4);
printDate(date0);
}
}
这是我写的一个 BirthDate.java全文
你放到自己的编辑器里去执行一下,然后再思考一下就明白了。
开发语言的学习一定要实践,实践才能出真知。
其实,更推荐用 addDays2 这种调用方法啊。。
不容易错。而且,拎得清。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式