为什么我需要一个需要实例的方法?为什么我不能让我所有的方法都是静态的?为什么我需要一个需要实例的方法?
回答
为什么你不是想在你的程序的任何地方任何状态?
你能想象如果没有String实例,并且String上的所有内容都是静态的吗?你会如何表现两个不同的角色序列?现在将相同的逻辑应用于其他代码。
从根本上说,面向对象的语言与周围状态对象的思想构建的:的Book
一个实例是不一样的的Book
另一个实例 - 每个Book
实例封装它的名字,作者,出版日期等你将如何模型只有静态方法,没有实例?
当然,你可以让所有的方法静态的,一个Book
传递作为一个需要使用状态每次调用的第一个参数。在幕后,几乎就像这样的事情已经发生......除了你失去了多态,所以接口,抽象类等都没用。不好。
我明白先生,非常感谢 – MahendraSK
因为对象一起是状态和行为,封装成一个组件。
如果您有单独的实例,则表示它们每个都可能具有随实例而异的私有数据。
静态数据和方法在类级别共享。各个实例不能有不同的静态数据。
静态方法不能直接访问对象内的成员变量 - 它们只能访问静态变量。
如果你有一个汽车类和一个静态数据成员就像一个整数,你只能拥有一辆汽车,因为你不能制造汽车的多个实例并获得该变量的多个实例 - 你只能拥有单一的静态。
每辆车不能有相同的车牌号码,因此每辆车都需要自己的车牌变量。
与该变量一起工作的类中的方法需要非静态才能直接在其上工作。
使用“Car”类的示例,您可能有一个名为“startCar()”的方法。显然,你希望这种方法只与一辆汽车的某个“实例”进行交互,而不是对你所有的汽车都是全球的。例如在Java中:
public class Car {
public void startCar() {
// code to start car
}
}
public class MyProgram {
public static void main(String[] Args) {
Car myFord = new Car();
Car myOpel = new Car();
myCar.startCar; // starts the Car "myCar" and leaves "myOpel" alone
}
}
这也是值得注意的是,静态方法可以不利用它们所定义的类的实例变量。
- 1. 为什么eclipse需要一个名为'main'的实际方法?
- 2. 为什么C++单例实例化需要do_nothing方法?
- 3. 为什么我需要显式实例化一个对象?
- 4. 为什么我们需要addRequestHeader方法?
- 5. 为什么我们需要ContinueWith方法?
- 6. 为什么我们需要Buffer.isBuffer方法?
- 7. 为什么我需要我需要在子类中实现IDisposable()
- 8. 为什么一个amazon ec2实例需要两个弹性IP?
- 9. Python - 为什么在另一个实例方法中调用这个实例方法时不需要括号?
- 10. 为什么我需要现实生活中的私人方法?
- 11. AWS - EC2:为什么我需要多个实例?
- 12. 我做了什么?需要实例化一个模板类
- 13. 为什么我需要“&”?
- 14. 为什么我需要android.permission.ACCESS_CHECKIN_PROPERTIES
- 15. 为什么我需要extern?
- 16. 为什么我需要MEX?
- 17. 为什么我不需要
- 18. 为什么我需要OleDbCommand.Prepare()?
- 19. 为什么spinner listener需要onNothingSelected方法?
- 20. 为什么CustomFieldSerializer需要静态方法?
- 21. 为什么需要DataBind()方法?
- 22. 为什么申请方法需要parens?
- 23. 为什么需要使用'addChildViewController:'方法
- 24. 为什么Settings.System.put/get方法需要ContentResolver?
- 25. 为什么JSON不需要setXXX方法?
- 26. 为什么你需要重载方法?
- 27. 为什么我们需要检查用户的UserInterface实例
- 28. 为什么我们需要新的实例变量?
- 29. 为什么我要为一个匿名类“需要opCmp”?
- 30. 为什么需要
鉴于问题的简洁性,我可以稍微合理化总投票。我不能合理化的是一个与新程序员非常相关的问题的投票。当然,这个问题可能会有所提高,我认为这最终不会得到5票的反对。 –