我有三个类,如下面
public abstract class Parent {
public void parentCallerMethod() {
getMethod(helperMethod());
}
public abstract void getMethod(String test);
public String helperMethod() {
System.out.println("inside parent helperMethod");
return "inside parent helperMethod";
}
}
第二课
public class Child extends Parent {
@Override
public void getMethod(String test) {
System.out.println("Inside child getMEthod....");
}
}
调用父类方法的最终类
public class FinalClass {
private void testMethod() {
new Child().parentCallerMethod();
}
}
我的问题是new Child().parentCallerMethod();
做了什么?什么是new Child()
。为什么我无法做Child.parentCallerMethod()
是否与执行Child child = new Child();
PS:帖子标题可能有误。如果错了,我会根据答案进行更改。
答案 0 :(得分:3)
new Child().parentCallerMethod()
与:
Child child = new Child();
child.parentCallerMethod();
但不保留实例变量。
它将调用父方法,因为Child
不会覆盖它。您无法拨打Child.parentCallerMethod()
,因为此方法不是static
(类方法)。
答案 1 :(得分:0)
new Child().parentCallerMethod();
创建Child类的新实例,然后在Child类的实例上调用该方法。
Child.parentCallerMethod();
将调用类Child的static
方法。哪个不存在,所以这就是你无法调用它的原因。
答案 2 :(得分:0)
$('#parent_div and :notInsideElements')
创建子类的实例。 new Child()
对表达式object.something()
的结果调用方法something
。因此,如果您将object
替换为new Child()
而将object
替换为parentCallerMethod
,则会获得something
,这将创建一个新的new Child().parentCallerMethod()
对象并调用{ {1}}方法就可以了。
答案 3 :(得分:0)
代码new Child().parentCallerMethod()
创建一个新的Child对象并在该对象上调用该方法。
调用Child.parentCallerMethod()
将是静态方法调用,但parentCallerMethod
未声明为静态。静态方法意味着该方法属于该类,并且由于没有对象,因此无法访问子对象的任何成员。
new Child()
调用会创建一个Child
对象,其中可能包含字段。在您的情况下,Child
实际上并不包含任何字段,因此无法访问。
如果确实如此,您的方法将能够访问对象中的数据。