java中父类方法return this.对象还是变量,子类去调用this.这个方法的问题
这个问题很简单
public class this_test01 {
public static void main(String[] args) {
zi j=new zi();
j.pri();
}
}
class zi extends fu{
int i=this.getnum();
void pri(){
System.out.println(i);
}
}
class fu {
int num=1;
int getnum(){
return this.num;
}
}
返回结果是1,如果运用到对象身上就是
public class this_test01 {
public static void main(String[] args) {
zi j=new zi();
Main m=new Main();
j.pri();
j.getnum1();
}
}
class zi extends fu{
Main i=this.getnum();
void pri(){
System.out.println(i);
}
}
class fu {
Main num=new Main();
void getnum1(){
System.out.println(num);
}
Main getnum(){
return this.num;
}
}
创建的对象就是父类的对象,由此可知调用方法里面有this,就要看这个方法是在哪个类上面,用本类this去调用方法里面返回的this。
这种写法非常奇妙,可以说是一个子类就对应一个fu类的外部Main类的对象
public class this_test01 {
public static void main(String[] args) {
zi j=new zi();
zi1 k=new zi1();
j.pri();
j.getnum1();
k.pri();
}
}
class zi extends fu{
Main i=this.getnum();
void pri(){
System.out.println(i);
}
}
class zi1 extends fu{
Main i=this.getnum();
void pri(){
System.out.println(i);
}
}
class fu {
Main num=new Main();
void getnum1(){
System.out.println(num);
}
Main getnum(){
return this.num;
}
}
但是仔细想想也不算什么,因为创建子类对象时,它会执行父类的初始化,自动new了一个Main对象,不同子类的Main对象完全不同。(除非父类不是采用new Main的形式)。