当前位置:编程学习 > JAVA >>

内部构造函数this,初学者请多多照顾

class Base 
{
Base(int i)
{
System.out.println("call Base(int i)");
}
}
public class Sub extends Base
{
Sub()
{
this(0);//这行语句求解释?
System.out.println("call Sub()");
}
Sub(int i)
{
Sub(i)//????????
System.out.println("call Sub(int i)");
}
public static void main(String arg[])
{
Sub sub=new Sub();
}
}
我是初学者还请各位详解这个程序 嗯 --------------------编程问答-------------------- 楼主可能写错了一点就是Sub(i)//????????可能是super (i);要不然编译通不过,super(i)是调用父类变量为一个整形的构造函数
Base(int i)
 {
 System.out.println("call Base(int i)");
 }

this(i)就是调用当前类的变量为一个整形的构造函数
Sub(int i)
 {
 Sub(i)//????????
 System.out.println("call Sub(int i)");
 } --------------------编程问答-------------------- this(0);里面的参数值0是表示调用当前类的整型构造函数么? --------------------编程问答-------------------- 不是,this(0) 0为参数,比如this()就是调用当前无参构造函数,this(0),因为有一个参数0,所以就要调用当前构造函数中有且一个参数,参数类型为整形的构造函数,这样楼主应该明白了吧。 --------------------编程问答-------------------- Sub(int i)
{
Sub(i)//这里应该是super(i);而不是Sub(i);
System.out.println("call Sub(int i)");
}
--------------------编程问答-------------------- 学习了。




--------------------编程问答-------------------- 嗯,明白了,谢谢 --------------------编程问答-------------------- Java关键字this只能用于方法方法体内。当一个对象创建后,Java虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个指针的名字就是 this。因此,this只能在类中的非静态方法中使用,静态方法和静态的代码块中绝对不能出现this,这在“Java关键字static、final 使用总结”一文中给出了明确解释。并且this只和特定的对象关联,而不和类关联,同一个类的不同对象有不同的this。
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,