我有一个名为pojo
的超级课程。我有一个名为ExtendPojo
的子类。
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;
}
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);
}
}
答案 0 :(得分:0)
您正在创建两个独立的对象。
首先创建一个对象并将其命名为santhosh
。 obj
变量引用了此对象。
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.
}
}