Java不同类方法的调用以及static方法小解

本文详细解析了Java中静态方法的使用方式及其限制条件,包括如何从非静态上下文中调用静态方法,以及静态方法能否直接访问实例方法等问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

虽然很基础,但我还是写一下.
定义两个类:TestMethod和TestMet,TestMethod内容如下:

package test;
public class TestMethod {
    public static void main(String[] args) {
        TestMet testMet=new TestMet();
        testMet.onD0();
    }
}

TestMet内容如下:

package test;
public class TestMet {
    public TestMet() {
        super();
    }
    void    onD0() {
    }
}

此时类TestMethod方能调用TestMet中的onDO方法,但是当你这样写时:

package test;
public class TestMethod {
    public static void main(String[] args) {
        //TestMet testMet=new TestMet();
        TestMet.onD0();
    }
}

报错,提示要将TestMet中的onDO方法改成static,事实上,我想要说的就是static修饰的方法才能用类名.方法调用,如果不是静态方法你还得通过构造器new 类名,才能调用该类的方法.
再来,看下static方法是否真的不能调用本类非静态方法,示例如下:
(注意:java类中,如果用户没有一个类创建构造器,java编译器就会自动识别,在jvm中为这个类创建一个默认构造器,这个构造器没有参数。当用户为类创建一个构造器时,不管这个构造器是否有参数,JVM就不再为该类创建一个无参的构造器了,为了防止这个类被其他类继承,所以我们要强调,在为类创建构造器时就要创建一个无参的构造器,以防止子类初始化时,调用父类的默认构造器。所以我们创建的这个无参构造器,也是默认构造器。)

package test;
public class TestMethod {
    void Hello(){}
    public static void main(String[] args) {
        TestMet testMet=new TestMet();
        testMet.onD0();
        Hello();
    }
}

报错提示:将Hello方法改成static,果真.
静态方法只能调用该类的静态变量?

package test;
public class TestMethod {
    int a=5;
    public TestMethod() {
        super();
    }
    public void Hello(){
        a=6;
        aa();//非静态方法可以调用静态方法

    }
    static void aa(){}
    public static void main(String[] args) {
        TestMet testMet=new TestMet();
        testMet.onD0();
        TestMethod testMethod=new TestMethod();
        testMethod.Hello();
//      testMet.Hello();
//      Hello();

    }
}

确实如此,调用其他类的静态方法和变量试试:
答案是不行,只能通过类名.(静态)方法.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值