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的形式)。

Java子类可以通过以下两种方式调用父类的get和set方法: 1. 使用super关键字:子类可以使用super关键字来调用父类方法。通过super,子类可以访问父类的成员变量方法。例如,如果父类有一个名为"getName"的方法子类可以使用super.getName()来调用方法。 2. 继承父类方法子类可以继承父类方法,包括get和set方法。继承后,子类可以直接调用这些方法,就像调用自己的方法一样。例如,如果父类有一个名为"getName"的方法子类可以直接使用getName()来调用方法。 下面是一个简单的示例代码,演示了子类如何调用父类的get和set方法: ```java // 父类 class Parent { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } } // 子类 class Child extends Parent { private int age; public int getAge() { return age; } public void setAge(int age) { this.age = age; } } // 测试 public class Main { public static void main(String[] args) { Child child = new Child(); child.setName("John"); // 调用父类的setName方法 child.setAge(20); // 调用子类自己的setAge方法 System.out.println(child.getName()); // 调用父类的getName方法 System.out.println(child.getAge()); // 调用子类自己的getAge方法 } } ``` 在上面的示例子类Child继承了父类Parent的getName和setName方法,可以直接调用这些方法。同时,子类Child还定义了自己的getAge和setAge方法。在测试代码,我们创建了Child对象child,并分别调用父类的getName方法子类的getAge方法以及父类的setName和子类的setAge方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nanshaws

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值