我想举个例子:
1 public class Ticket
2 {
3 private int ticketid;
4 private int price;
5 private int availableTickets;
6 public void setTicketid(int ticketid)
7 {
8 this.ticketid=ticketid;
9 }
10 public void setPrice(int price)
11 {
12 this.price=price;
13
14 }
15 public void setAvailableTickets(int availableTickets)
16 {
17 if(availableTickets>0)
18 {
19 this.availableTickets=availableTickets;
20 }
21 }
22 public int getTicketid()
23 {
24 return ticketid;
25 }
26 public int getPrice()
27 {
28 return price;
29 }
30 public int getAvailableTickets()
31 {
32 return availableTickets;
33 }
34 public int calculateTicketCost(int nooftickets)
35 {
36
37 int at=getAvailableTickets();
38 int ans;
39 int p;
40 if(nooftickets<at)
41 {
42 at=at-nooftickets;
43 setAvailableTickets(at);
44 p=getPrice();
45 System.out.println(p+"p");
46 ans=nooftickets*p;
47 return ans;
48
49 }
50 else
51 {
52 return -1;
53 }
54 }
55 }
为什么我们要使用getAvailableTickets()
,setAvailableTickets()
和getPrice()
在calculateTicketCost()函数中没有对象的情况下,但是如果我们在main方法中尝试了那些方法而不是calculateTicketCost(),我们将需要一个对象来使用这三个函数。
请告诉我为什么不需要对象。暴躁。
因为主方法在类之外,所以您必须创建该类的实例,您可以使用该实例访问该类的方法
并且如果您的主要方法在类内,则可以在不创建对象的情况下使用主要方法中的方法,但是您的方法必须为static
也请检查此Java OOP
static方法存在于无对象的“无此”环境中。您只能使用静态变量,方法参数和其他静态方法。 非静态方法具有对象/数据上下文。
使用对象方法的示例:您有一个Employee方法。该员工的姓名,ID等特定于该员工。
静态方法的示例:将角度从度转换为弧度。此方法不需要上下文-仅需要一个度数参数
在静态上下文中,您可以在不创建实例的情况下调用静态方法。您的问题是,为什么不从静态上下文创建实例就不能访问非静态方法。
静态方法在您可以声明的每个实例中都是通用的(固定和常量)。所有非静态方法都可以访问相同的静态方法。另一方面,如果要从静态方法中调用非静态方法,则要调用哪个非静态方法?在创建类的实例之前,内存中不存在非静态方法。您可以通过实例化类来创建它们的许多副本,然后可以在静态上下文中访问它们。
第二,您可以从另一个非静态方法访问一个非静态方法,而无需创建实例。为什么会发生?发生这种情况是因为非静态方法仅在创建相应类的实例时才存在。当您创建一个实例时,这意味着这两个方法都存在于该实例中,并且它们可以彼此访问而无需访问。