Java中的main方法调用非静态方法处理

 更新时间:2023年06月06日 09:43:42   作者:依旧……  
这篇文章主要介绍了Java中的main方法调用非静态方法处理,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

Java main方法调用非静态方法处理

初学Java,对于main 方法调用非静态方法所导致问题简单的分析一下

1.问题描述

代码

public class Object {
    public static void main(String[] args) {
        System.out.println(Object.totring());
    }
    public String totring() {
        return ("在" + Object.class.getName() + "类中写totring()方法");
    }
}

问题

java: Cannot make a static reference to the non-static method totring() from the type Base.oop.Object

2. 原因

简单来说,main函数是静态/static类型的,静态类型都是和类/class一块加载在内存之中的,本质上来讲并不是该类的成员,在java虚拟机装在类的时候,这些静态的东西已经有了对象,它只是在这个类中”寄居”,不需要通过类的构造器(构造函数)类实现实例化;

而非静态的属性或者方法,在类的装载是并没有存在,需在执行了该类的构造函数后才可依赖该类的实例化对象存在,所以静态函数不可以调用非静态函数,也不可以使用this关键字。

3.解决方法

解决方法一

根据原因,可以知道只有将非静态方法实例化创建对象之后才可以调用其方法

public class Object {
    public static void main(String[] args) {
        Object xiaoming = new Object(); // 类实例化为对象
        System.out.println(xiaoming.totring()); //打印输出,也可匿名化实例对象,直接是 ==> new Object().toString()
    }
    public String totring() {
        return ("在" + getClass().getName() + "类中写totring()方法");
    }
}

解决方法二

尽管静态不可调用非静态,但静态之间可以相互调用,那就把方法改为静态方法

public class Object {
    public static void main(String[] args) {
        System.out.println(Object.totring());
    }
    public static String totring() {
        return ("在" + Object.class.getName() + "类中写totring()方法");
    }
}

main方法中如何调用非静态方法

public class text1{
public static void main(String [] args){
int a = 12;
int b = 23;
text1 aa = new text1();
aa.add(a,b);
}
public void add(int a,int b){
System.out.println("计算的结果是:"+(a+b));
}
}

main方法里面调用非静态方法时,需要new一个对象,因为静态方法,静态类属于模板,非静态类和方法属于对象。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Spring Cloud  Eureka服务治理的实现

    Spring Cloud Eureka服务治理的实现

    服务治理是微服务框架中最为核心和基础的模块,它主要是用来实现各个微服务实例的自动化注册与发现。这篇文章主要介绍了Spring Cloud Eureka服务治理的实现,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • Java解压zip文件的关键代码

    Java解压zip文件的关键代码

    本文给大家分享一段java解压zip文件的关键代码,代码简单易懂,非常不错,具有参考借鉴价值,感兴趣的朋友一起看看吧
    2016-09-09
  • Spring创建Bean的生命周期详析

    Spring创建Bean的生命周期详析

    这篇文章主要介绍了Spring创建Bean的生命周期详析,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • spring 自动注入AutowiredAnnotationBeanPostProcessor源码解析

    spring 自动注入AutowiredAnnotationBeanPostProcessor源码解析

    这篇文章主要介绍了spring自动注入AutowiredAnnotationBeanPostProcessor源码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • Java8函数式接口Predicate用法示例详解

    Java8函数式接口Predicate用法示例详解

    这篇文章主要为大家介绍了Java8函数式接口Predicate用法示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • JavaMail入门教程之创建邮件(2)

    JavaMail入门教程之创建邮件(2)

    这篇文章主要介绍了JavaMail入门教程之创建邮件的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • MyBatis-Plus自定义SQL和复杂查询的实现

    MyBatis-Plus自定义SQL和复杂查询的实现

    MyBatis-Plus增强了MyBatis的功能,提供注解和XML两种自定义SQL方式,支持复杂查询如多表关联、动态分页等,通过注解如@Select、@Insert、@Update、@Delete实现CRUD操作,本文就来介绍一下,感兴趣的可以了解一下
    2024-10-10
  • AJAX+JAVA用户登陆注册验证的实现代码

    AJAX+JAVA用户登陆注册验证的实现代码

    这篇文章主要介绍了AJAX+JAVA用户登陆注册验证的实现代码,通过ajax异步刷新页面验证用户输入的账号密码是否在数据库中存在。非常具有实用价值,需要的朋友可以参考下
    2018-06-06
  • Mybatis的TypeHandler实现数据加解密详解

    Mybatis的TypeHandler实现数据加解密详解

    这篇文章主要介绍了Mybatis基于TypeHandler实现敏感数据加密详解,Typehandler是mybatis提供的一个接口,通过实现这个接口,可以实现jdbc类型数据和java类型数据的转换,需要的朋友可以参考下
    2024-01-01
  • java实现页面置换算法

    java实现页面置换算法

    这篇文章主要为大家详细介绍了java实现页面置换算法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-08-08

最新评论