为了账号安全,请及时绑定邮箱和手机立即绑定

Java:如何从主方法调用非静态方法?

Java:如何从主方法调用非静态方法?

青春有我 2019-10-21 09:41:37
我正在学习Java,现在遇到以下问题:我将main方法声明为public static void main(String[] args) {..... }在我的主要方法中,因为它是静态的,所以只能调用其他静态方法!!!为什么呢例如:我有另一堂课 public class ReportHandler {            private Connection conn;        private PreparedStatement prep;     public void executeBatchInsert() { .... } }所以在我的主班我声明一个 private ReportHandler rh = new ReportHandler();但是,如果它们不是静态的,我将无法调用任何方法。这哪里出错了?编辑:抱歉,我的问题是:如何“设计”该应用程序,以允许我从“起点”调用其他类static void main。
查看完整描述

3 回答

?
慕妹3146593

TA贡献1820条经验 获得超9个赞

您只需要创建一个ReportHandler实例:


ReportHandler rh = new ReportHandler(/* constructor args here */);

rh.executeBatchInsert(); // Having fixed name to follow conventions

实例方法的重点是它们是特定于类的特定实例的,因此您首先需要创建一个实例。这样,实例将可以访问正确的连接并根据您的情况准备语句。只是打电话ReportHandler.executeBatchInsert,上下文不够。


了解这一点非常重要:


实例方法(和字段等)与特定实例有关

静态方法和字段与类型本身相关,而不是特定实例

一旦了解了根本的区别,就可以在不创建实例的情况下调用实例方法,这是有道理的。例如,问“ 那个人的身高是多少?” 就很有意义。(对于特定的人),但问“人的身高是多少?”没有道理。(未指定人员)。


假设您是从书本或教程中学习Java,则应该阅读更多有关静态和非静态方法等的示例-这是理解的重要区别,在理解之前,您将遇到各种问题。 。


查看完整回答
反对 回复 2019-10-21
?
MMTTMM

TA贡献1869条经验 获得超4个赞

Java是一种面向对象的编程,而不是过程编程。因此,代码中的每一件事都应该操纵一个对象。


public static void main仅仅是程序的入口。它不涉及任何对象。


那么用对象编码是什么?很简单,您需要创建一个特定的对象/实例,调用其方法以更改其状态或在该对象内执行其他特定功能。


例如


private ReportHandler rh = new ReportHandler();

rh.<function declare in your Report Handler class>

因此,当您声明静态方法时,它不会与您的对象/对象实例关联。OO编程也违反了它。


当该函数与后面的任何对象无关时,通常会调用静态方法。


查看完整回答
反对 回复 2019-10-21
  • 3 回答
  • 0 关注
  • 860 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信