定义一个Person类,两个构造方法。
Person(String name){
this.name = name ;
}
Person(String name,int age){
//this(name);
Person(name) ;
this.age = age;
}
编译在Person(name);上面有错误,虽然一直在用this(name),但是如果不用this呢?是不是
因为构造方法中必须用this关键字调用其他的构造方法?作者: 房宝彬 时间: 2012-2-7 17:19
this 是指 谁调用,就是谁的作者: 梅雄新 时间: 2012-2-7 17:35
楼主,在一够造方法中调用调用另一构造方法时用this指代调用,够造方法的调有成员的赋值和内存单元的分配
直接使用JVM会将其当做普通方法调用,楼主如果写个同名的public void Person(String name)方法就可以的
以下是我测试的 希望对楼主有帮助
加上普通方法就可以了
public class Person
{ String name;
int age;
Person(String name){
this.name = name ;
}
Person(String name,int age){
//this(name);
Person(name) ;
this.age = age;
}
public void Person(String a)
{
System.out.println(a);
}
public static void main(String args[])
{
Person p = new Person("似懂非懂");
Person p2 = new Person("sdf",12);
}
}作者: 魏腾飞 时间: 2012-2-7 17:39
简单的做一下还原:
public class Demo{
public static void main(String[] args){
Person p = new Person("zhangsan",12);
}
}
class Person{
String name;
int age;
Person(String name){
this.name = name ;
System.out.println("name="+name);
}
Person(String name,int age){
public class Rectangle{
public Rectangle(Location at, Shape size) {…}
public Rectangle(Shape size,Location at){
this(at, size); }
public Rectangle(Location at) {
this(at, new Shape(100,100));
}
public Rectangle(Shape size) {
this(size, new Location(1,1));
}
public Rectangle() {
this(new Location(1,1), new Shape(100,100));
}
}
2、消除歧义:
Location{
private int x;
private int y;
public Location(int x,int y) {
this.x=x;
this.y=y;
}
……
}
3、返回对象-链式方法调用:
public class Count {
private int i = 0;
Count increment() {
i++;
return this; //返回对象的地址,所以我们可以链式访问它
}
void print() {
System.out.println("i = " + i);
}
}
public class CountTest{
public static void main(String[] args) {
Count x = new Count();
x.increment().increment().print();
}
}
4、作为参数传递"this”变量-进行回调:
假设有一个容器类和一个部件类,在容器类的某个方法中要创建部件类的实例对象,而部件类的构造方法要接受一个代表其所在容器的参数。例如:
class Container
{
Component comp;
public void addComponent()
{
comp = new Component(this); //代表你所创建的对象,因为它要用到.
}
}
class Component
{
Container myContainer;
public Component(Container c)
{
myContainer = c;
}
}作者: 最初的理想 时间: 2012-2-7 18:26
因为构造方法中必须用this关键字调用其他的构造方法?是,调用自身构造方法必须用this指代且必须放在第一行。ls说的很详细了