为什么setXXX()方法没有重写?

时间:2016-08-26 19:45:46

标签: java

我有一个名为pojo的超级课程。我有一个名为ExtendPojo的子类。

pojo.java

package com.java.pojo;

public class pojo {

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public long getNumber() {
        return number;
    }

    public void setNumber(long number) {
        this.number = number;
    }

    public String toString() {
        return "pojo [name=" + name + ", age=" + age + ", number=" + number + "]";
    }

    private String name;
    private int age;
    private long number;
}

ExtendPojo.java

package com.java.pojo;

public class ExtendPojo extends pojo{

    public static void main(String[] args) {

        pojo obj = new pojo();
        obj.setName("santhosh");

        ExtendPojo exObj = new ExtendPojo();
        exObj.setName("mahesh");//It is not overriding

        System.out.println(obj.getName());//it prints santhosh.


    }

    public void setName(String name){
        super.setName(name);
    }
}

2 个答案:

答案 0 :(得分:0)

您正在创建两个独立的对象。

首先创建一个对象并将其命名为santhoshobj变量引用了此对象。

pojo obj = new pojo();
obj.setName("santhosh");

然后创建一个第二个对象,该对象由exObj变量引用。

ExtendPojo exObj = new ExtendPojo();

它还没有名称,因为它是一个新对象而您还没有分配名称。然后你给它一个名字。

exObj.setName("mahesh");//It is not overriding

现在您打印第一个对象的名称,该对象尚未更改。

System.out.println(obj.getName());//it prints santhosh.

代码完全按照您的要求执行。

如果您希望这两个变量引用相同的对象,那么您可以这样做:

ExtendPojo exObj = new ExtendPojo();

pojo obj = exObj ;//Same object, new variable, different type
obj.setName("santhosh");

exObj.setName("mahesh");//It is working now

System.out.println(obj.getName());//it prints mahesh.

答案 1 :(得分:0)

我已经完成了继承和方法覆盖概念并澄清了我的怀疑:)

public class ExtendPojo extends Pojo{

    public static void main(String[] args) {

        Pojo obj = new Pojo();
        obj.setName("santhosh");

        Pojo obj1 = new ExtendPojo();
        obj1.setName("mahesh");//It is overriding now

        System.out.println(obj1.getName());//it prints mahesh.

    }
}