繁体   English   中英

在Java中,为什么我们需要一个对象来调用同一个类的main函数中的一个函数,而另一个不是main的函数则不需要对象?

[英]In Java why we need an object to call a function in the main function of the same class but no object for other function which is not main?

我想举个例子:

    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 }

为什么我们可以在没有在 calculateTicketCost() 函数中使用对象的getAvailableTickets()setAvailableTickets()getPrice() ,但是如果我们在 main 方法中尝试这些方法而不是 calculateTicketCost(),我们将需要一个对象来使用这三个功能。

请告诉我为什么不需要对象。 斯姆。

因为 main 方法在类之外,所以你必须创建一个类的实例,你可以用它来访问类的方法

如果你的 main 方法在类中,你可以在不创建对象的情况下使用 main 方法中的方法,但你的方法必须是static

也请检查这个Java OOP

静态方法存在于无对象的“this”-less 上下文中。 您只能使用静态变量、方法参数和其他静态方法。 非静态方法具有对象/数据上下文。

使用对象方法的示例:您有一个 Employee 方法。 该员工的姓名、ID 等特定于该员工。

静态方法的示例:将角度从度数转换为弧度。 这个方法不需要上下文——它只需要一个度参数

在静态上下文中,您可以在不创建实例的情况下调用静态方法。 您的问题是为什么您不能在不从静态上下文创建实例的情况下访问非静态方法。

静态方法对于您可能可以声明的每个实例都是通用的(固定和常量)。 所有非静态方法都可以访问相同的静态方法。 另一方面,如果要从静态方法调用非静态方法,要调用哪个非静态方法? 在创建类的实例之前,内存中不存在非静态方法。 您可以通过实例化类来创建它们的许多副本,然后您可以在静态上下文中访问它们。

其次,您可以从另一个非静态方法访问一个非静态方法,而无需创建实例。 为什么会发生? 这是因为非静态方法仅在创建相应类的实例时才存在。 当您创建一个实例时,这意味着该实例中存在两种方法,并且它们可以相互访问。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM