理解java中的类

理解java中的类,java,class,conceptual,Java,Class,Conceptual,所以我对这个概念有点困惑 在不首先实例化的情况下调用的类的实例方法 物件 这在java中是如何工作的?我必须实例化一个对象,这样才能调用该对象上的方法 例如,下面是我的课程 public class Date{ public String month; public int day; public int year; public void writeOutput() { System.out.println("To

所以我对这个概念有点困惑

在不首先实例化的情况下调用的类的实例方法 物件

这在java中是如何工作的?我必须实例化一个对象,这样才能调用该对象上的方法

例如,下面是我的课程

public class Date{
        public String month;
        public int day;
        public int year;
    public void writeOutput()
    {
        System.out.println("Today is : " + this.month + " " + this.day + " , " + this.year);
    }
}

public class DateTest{
    public static void main(String[] yolo){
        Date today;
        today = new Date();
        today.month = "January";
        today.day = 31;
        today.year = 2015;
        today.writeOutput();
    }
}
因此,我必须先实例化某个日期?我可以在不实例化某种“日期”对象的情况下调用实例方法吗

关于:

因此,我必须先实例化某个日期?我可以在不实例化某种“日期”对象的情况下调用实例方法吗

对。要调用Date的实例方法,必须首先创建一个Date对象,这是您当前在main方法中执行的操作

    Date today;  // declare Date variable today
    today = new Date();  // create instance and assign it to today
注意,您的代码直接操纵日期字段,这是应该避免的。

关于:

因此,我必须先实例化某个日期?我可以在不实例化某种“日期”对象的情况下调用实例方法吗

对。要调用Date的实例方法,必须首先创建一个Date对象,这是您当前在main方法中执行的操作

    Date today;  // declare Date variable today
    today = new Date();  // create instance and assign it to today

注意,您的代码直接操纵日期字段,这是应该避免的。

语句
today=newdate()实例化
类日期
的实例,并将该实例的引用分配给变量
今天


它允许通过
today
变量引用实例变量和方法。如果没有实例,这些成员将不存在。

语句
today=newdate()实例化
类日期
的实例,并将该实例的引用分配给变量
今天


它允许通过
today
变量引用实例变量和方法。如果没有实例,这些成员将不存在。

是的,您可以使用静态字段和工厂方法调用方法,而无需实例化

public class Date{
    public static String month;
    public static int day;
    public static int year;
public static void writeOutput()
{
    System.out.println("Today is : " + this.month + " " + this.day + " , " + this.year);
}}
然后您可以执行以下操作:

Date.month = "January";
Date.day = 1;
Date.year=2015;
Date.writeOutput();
这样您就不需要实例化。然而,这不一定是好的做法。如果您不需要类变量,而是将必要的参数传递给方法,那么静态工厂方法是很好的。例如:

public class Date
{

public void writeOutput(String year, int day, int month)
{
    System.out.println("Today is : " + month + " " + day + " , " + year);
}
}
然后你可以打电话

Date.writeOutput("January", 1, 1);

是的,您可以使用静态字段和工厂方法调用方法,而无需实例化

public class Date{
    public static String month;
    public static int day;
    public static int year;
public static void writeOutput()
{
    System.out.println("Today is : " + this.month + " " + this.day + " , " + this.year);
}}
然后您可以执行以下操作:

Date.month = "January";
Date.day = 1;
Date.year=2015;
Date.writeOutput();
这样您就不需要实例化。然而,这不一定是好的做法。如果您不需要类变量,而是将必要的参数传递给方法,那么静态工厂方法是很好的。例如:

public class Date
{

public void writeOutput(String year, int day, int month)
{
    System.out.println("Today is : " + month + " " + day + " , " + year);
}
}
然后你可以打电话

Date.writeOutput("January", 1, 1);

这是我的评论:


如果狗不存在,你能让它吠叫吗?(而且只有 狗是存在的)。现在想象一下,把狗当作一个班级, 吠叫是一种方法,雷克斯是狗的一个例子。所以是的,你需要 实例化一个类(Dog Rex=new Dog();)以使用方法 (雷克斯树皮()。当然,您可以使用静态方法来 做一些像Dog.bark()的事情,但这不是真正的OOP


这是我的评论:


如果狗不存在,你能让它吠叫吗?(而且只有 狗是存在的)。现在想象一下,把狗当作一个班级, 吠叫是一种方法,雷克斯是狗的一个例子。所以是的,你需要 实例化一个类(Dog Rex=new Dog();)以使用方法 (雷克斯树皮()。当然,您可以使用静态方法来 做一些像Dog.bark()的事情,但这不是真正的OOP


字符串a=新卡()毫无意义。它是一根绳子还是一张卡片?请尽量澄清您的问题。关于这个“概念”:
“所以我对“在不首先实例化对象的情况下调用类的实例方法”的概念有点困惑。”。“
——忽略它,因为它不是一个有效的概念。只能对实例调用实例方法。我认为更好的说法是,在调用实例方法之前,是否必须实例化一个对象?假设你引用了一条错误消息,那么这类似于“你试图
post
,但你还没有
字母
(或者没有说你想发布哪个字母)”如果狗不存在,你能让它吠叫吗?(只有狗的概念存在)。现在想象一下,dog是类,bark是方法,Rex是dog的实例。因此,是的,为了使用方法(Rex.bark()),您需要实例化一个类(Dog Rex=new Dog();)。当然,您可以使用静态方法来执行Dog.bark()之类的操作,但这并不是真正的OOP毫无意义。是字符串还是卡片?请尽量澄清您的问题。关于这个“概念”:
“所以我对“在不首先实例化对象的情况下调用类的实例方法”的概念有点困惑。”。“
——忽略它,因为它不是一个有效的概念。只能对实例调用实例方法。我认为更好的说法是,在调用实例方法之前,是否必须实例化一个对象?假设你引用了一条错误消息,那么这类似于“你试图
post
,但你还没有
字母
(或者没有说你想发布哪个字母)”如果狗不存在,你能让它吠叫吗?(只有狗的概念存在)。现在想象一下,dog是类,bark是方法,Rex是dog的实例。因此,是的,为了使用方法(Rex.bark()),您需要实例化一个类(Dog Rex=new Dog();)。当然,您可以使用静态方法来执行Dog.bark()之类的操作,但这并不是真正的OOP。我想我还没有学习过静态字段和工厂方法。我不确定是什么