在java中怎样使方法调用同一个类中的方法是啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在java中怎样使方法调用同一个类中的方法是啥?相关的知识,希望对你有一定的参考价值。

1、如果一个类中只有一个名称为a的方法,那么我们可以直接调用即可,如下图所示

2、以下是我们直接使用传统的方式直接调用这个类中的a方法。

3、但是如果一个类中,拥有多个方法名一样的方法,那么我们使用反射机制,要如何去调用这些方法呢,如下图所示,一个类中有多个方法名相同的方法。

4、可能已经注意到了,虽然他们具有相同的方法名,但是他们却有着一些差异

5、他们要求传入的参数类型及其数量都是不一样的。通过先查看一遍不同方法,然后即可知道,我们要调用的具体是哪个方法,最后直接使用反射机制进行调用。

6、使用反射机制的类加载器,去加载类。具体如下图所示、

7、接下来,对类进行实例化,实例化使用到的方法为下图所示:

8、实例化后,我们即可开始指定方法,我们使用"getDeclaredMethod()"来选择不同的方法。

9、第一个参数表示的是方法名,指定要去指定这个方法,而第二个参数指定的是方法的形参。

10、我们这里指定的是形参,如果没有参数,则直接写成null即可。

11、接下来,我们使用invoke,调用指定类中的这个方法,第一个参数是实例化好的类,第一个参数是实际需要传入的参数,而不是形参。

12.通过上图的方法,找到下图所示的方法,并调用它。

参考技术A class A

int te()

class B

A a=new A();//在公共类里新建类A的对象也行,反正调用其他类的方法要通过那个类的实例对象来调用
a.te();//通过A类的实例对象a调用方法te()

在 Java 中,如何从派生类中的覆盖方法调用基类的方法?

【中文标题】在 Java 中,如何从派生类中的覆盖方法调用基类的方法?【英文标题】:In Java, how do I call a base class's method from the overriding method in a derived class? 【发布时间】:2010-09-21 02:25:46 【问题描述】:

我有两个Java类:B,它扩展了另一个类A,如下:

class A 
    public void myMethod()  /* ... */ 


class B extends A 
    public void myMethod()  /* Another code */ 

我想从B.myMethod() 拨打A.myMethod()。我来自C++ world,我不知道如何用Java 做这个基本的事情。

【问题讨论】:

【参考方案1】:

您要查找的关键字是super。例如,请参阅this guide。

【讨论】:

看起来在 C++ 中你可以调用一个特定的祖先方法,但不是 java,你可以将它向上传递...【参考方案2】:

只需使用 super 调用它。

public void myMethod()

    // B stuff
    super.myMethod();
    // B stuff

【讨论】:

【参考方案3】:

答案如下:

super.Mymethod();
super();                // calls base class Superclass constructor.
super(parameter list);          // calls base class parameterized constructor.
super.method();         // calls base class method.

【讨论】:

【参考方案4】:

super.MyMethod() 应在class BMyMethod() 内调用。所以应该是这样的

class A 
    public void myMethod()  /* ... */ 


class B extends A 
    public void myMethod()  
        super.MyMethod();
        /* Another code */ 
    

【讨论】:

【参考方案5】:

调用 super.myMethod();

【讨论】:

【参考方案6】:

我很确定您可以使用 Java 反射机制来做到这一点。它不像使用 super 那样简单,但它会给你更多的力量。

class A

    public void myMethod()
     /* ... */ 


class B extends A

    public void myMethod()
    
        super.myMethod(); // calling parent method
    

【讨论】:

这不会在代码中显示任何 java 反射,并且与其他代码相同。还有更多的答案吗?【参考方案7】:

使用super 关键字。

【讨论】:

【参考方案8】:
super.baseMethod(params);

使用 super 关键字调用基本方法并传递相应的参数。

【讨论】:

【参考方案9】:
class test

    void message()
    
        System.out.println("super class");
    


class demo extends test

    int z;
    demo(int y)
    
        super.message();
        z=y;
        System.out.println("re:"+z);
    

class free
    public static void main(String ar[])
        demo d=new demo(6);
    

【讨论】:

【参考方案10】:

看,这里你重写了基类的方法之一,因此如果你想从继承的类中调用基类方法,那么你必须使用 super 关键字在继承类的同一个方法中。

【讨论】:

【参考方案11】:

如果你使用这些方法进行初始化,那么使用类 A 的构造函数并在类 B 的构造函数中传递 super 关键字。

或者如果你想从子类方法调用超类的方法,那么你必须在子类方法中使用 super 关键字,例如: super.myMethod();

【讨论】:

【参考方案12】:
// Using super keyword access parent class variable
class test 
    int is,xs;

    test(int i,int x) 
        is=i;
        xs=x;
        System.out.println("super class:");
    


class demo extends test 
    int z;

    demo(int i,int x,int y) 
        super(i,x);
        z=y;
        System.out.println("re:"+is);
        System.out.println("re:"+xs);
        System.out.println("re:"+z);
    


class free
    public static void main(String ar[])
        demo d=new demo(4,5,6);
    

【讨论】:

以上是关于在java中怎样使方法调用同一个类中的方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

java调用同一个类中的方法为啥要将方法申明成静态?

Java中的静态方法是啥?

Java语言中throw和throws的区别是啥?

java中怎样调用现有的dll文件

一个类怎样调用另一个类中的属性和方法

怎样在java类中调用带参数的可执行文件(比如:.exe,.sh等等)?