Java方法流
我正在尝试学习如何在android上编程,android当然使用Java。我非常理解Java,但这让我感到困惑 一个我视为函数的方法(PHP是我的母语编程语言)似乎可以在java文件中的任何位置声明,但仍然可以在任何其他点拉出,是这样吗?我的意思是,在PHP中,您必须定义一个函数(方法),然后才能调用它。所以一切都必须井然有序 也就是调用一个函数,比如在调用它的方法中包含该段代码。例如: 方法1包含opendb命令 方法2包含closedb命令 一旦创建方法调用方法1,那么方法2就会相应地执行操作Java方法流,java,android,Java,Android,我正在尝试学习如何在android上编程,android当然使用Java。我非常理解Java,但这让我感到困惑 一个我视为函数的方法(PHP是我的母语编程语言)似乎可以在java文件中的任何位置声明,但仍然可以在任何其他点拉出,是这样吗?我的意思是,在PHP中,您必须定义一个函数(方法),然后才能调用它。所以一切都必须井然有序 也就是调用一个函数,比如在调用它的方法中包含该段代码。例如: 方法1包含opendb命令 方法2包含closedb命令 一旦创建方法调用方法1,那么方法2就会相应地执行操
抱歉可能听起来很愚蠢,但我喜欢具体的答案,而不是我的假设。在java中声明方法的顺序并不重要 方法之间没有关系。您可以调用
method1
任意次数,而不考虑其他方法method2
一个样本可能看起来像:
public DatabaseManager {
public void openConnection() {
// ...
}
public void closeConnection() {
// ...
}
}
您可以使用以下命令调用:
DatabaseManager db = new DatabaseManager();
db.openConnection();
// do something
db.closeConnection();
我认为是函数的方法
(PHP是我的母语编程
语言)似乎可以声明
java文件中的任何位置,并且仍然是
在其他任何一点都被拔出,是吗
那么
嗯,部分正确:-)。Java(和许多其他语言一样)有方法“可见性”的概念(函数在Java中通常称为“方法”)。如果一个方法是private
,那么它只在同一个类中可见(并且可用),如果它是public,那么它可以从任何地方调用。请参阅优秀Java教程,其中包括:
但是,与PHP不同,在单个类中声明方法的顺序是不相关的。可以从定义点/线之前的同一类调用方法
也就是调用一个函数,比如
在您的
方法调用它。例如:
是的,在最简单的情况下,调用方法的行为类似于在调用方法的地方包含该代码。但有一些重要的区别:
- 如果您调用一个方法,它将无法从调用方法访问局部变量,并且仅当两个方法在同一个类中时才能访问类字段
- Java(面向对象)具有多态性:在对象实例上调用方法,实际执行的方法取决于对象实例的运行时类型,对于不同的代码路径,该类型可能不同。在这种情况下,调用一个方法比仅仅用方法的代码替换它要复杂得多
- Java方法可以递归地调用自己;如果编译器只是在调用它们的地方包含它们,那么这是行不通的
因此,将方法调用视为“像包含代码一样”可能没有什么帮助。…您的问题根本不是Java。听起来你从来没有用面向对象的方式编程过。你应该学习什么是类,什么是方法
我强烈推荐OOP本身的基础知识:在Java中,您的方法可以在类中以任何顺序声明,例如
class A {
void C() { }
void B() { C() }
}
可以等价地声明为
class A {
void B() { C() }
void C() { }
}
你的第二个问题不是很清楚。但只是澄清一下——没有什么比在Java中包含执行另一个脚本更好的了——通常,您将创建新对象或运行类的静态方法来完成任务。Max。。。我没有用PHP编写代码,但我已经编写了很多脚本。根据我发现的在线文档,PHP本机不支持事件。所以你是对的,在PHP中一切都必须“井然有序”。因此,您可能需要将注意力从我成长过程中使用的顺序编程模型转移到Android Java中使用的事件驱动模型
您可以将程序分为三个部分。视图或表示(main.xml)。控制器或事件处理程序(MyApp.java)和算法,比如model.java。java有“事件处理程序”,基本上是坐在那里等待接收事件,因此您无法绝对知道调用方法的顺序。在Model.java中完成繁重的工作并编写它,以便它对视图一无所知,并且是可重用的
因此,在UNIX中,模型是引擎,视图和控制器是接口。界面-引擎与模型控制器视图
希望有帮助,
JAL调用函数肯定不像在调用方法中包含那部分代码,至少与PHP的工作方式不同。一个Java方法中的局部变量对于它调用的任何方法都是不可见的。(但是,所有类成员(包括函数、内部类成员)都可以访问类和实例变量。)