我有一个疑问,请参阅以下代码。我有三个课程A
,B
和InheritanceExample
。在这里,我从主类中调用super.run()
;它正在调用B
类run()
方法。
是否有任何选项可以从主类(A
)调用InheritanceExample
类运行方法而不创建类A的实例?
class A
{
void run()
{
System.out.println("<<<====Class A run Method===>>>>");
}
}
class B extends A
{
void run()
{
System.out.println("<<<====Class B run Method===>>>>");
super.run();
}
}
public class InheritanceExample extends B{
/**
* @param args
*/
void run()
{
System.out.println("<<<====Main Class run Method===>>>>");
super.run();
}
public static void main(String[] args) {
InheritanceExample a = new InheritanceExample();
a.run();
}
}
答案 0 :(得分:0)
由于B
扩展 A
而InheritanceExample
扩展 B
,您正在创建实例。使方法A.run()
静态。
class A
{
void static run()
{
System.out.println("<<<====Class A run Method===>>>>");
}
}
class B
{
void run()
{
System.out.println("<<<====Class B run Method===>>>>");
A.run();
}
}
public class InheritanceExample extends B {
@Override
void run()
{
System.out.println("<<<====Main Class run Method===>>>>");
super.run();
}
public static void main(String[] args) {
InheritanceExample a = new InheritanceExample();
a.run();
}
}
答案 1 :(得分:0)
没有
不能使A.run()与B.run()不同,例如使A.run()静态。
当B扩展A时,作为程序员,您必须确保从呼叫者的角度来看B&#34; is-a&#34;答:你想要做的是打破这个规则。
如果你想使用B作为A,你可能试图在调用点做一些事情,应该在B内部处理。
答案 2 :(得分:0)
不确定要实现的目标。但是看一下类层次结构和结构,不可能直接调用类A的run方法。但是如果我们更改并引入一个额外的静态方法,请说A类中的runImpl,并从类A的run方法调用相同的方法。我们可以从任何地方调用runImpl,因为它是静态的,而内部运行方法是调用runImpl,所以同样的实现通过run和runImpl调用。
以下是代码段:
class A
{
void run()
{
runImpl();
}
public static void runImpl(){
System.out.println("<<<====Class A run Method===>>>>");
}
}
class B extends A
{
void run()
{
System.out.println("<<<====Class B run Method===>>>>");
super.run();
}
}
public class InheritanceExample extends B{
/**
* @param args
*/
void run()
{
System.out.println("<<<====Main Class run Method===>>>>");
super.run();
}
public static void main(String[] args) {
A.runImpl();
}
}
答案 3 :(得分:0)
class a{
void run(){
System.out.println("runing method run of a clss");
}
}
class b extends a{
void run(){
super.run();
System.out.println("runing method run of b clss");
}
}
class InheritanceExample extends b{
void run(){
super.run();
System.out.println("running method run in inheritance class");
}
}
class pratics{
public static void main(String[] args){
System.out.println("********");
InheritanceExample a1=new InheritanceExample();
a1.run();
System.out.println("********");
}
}