有些类需要实例化,有些不是..为什么?

时间:2016-06-30 04:23:42

标签: java eclipse selenium

在Java中,某些类需要使用new关键字进行实例化。

如果我们使用new来实例化它们,那么只有eclipse在对象之后显示其methods作为建议。但是有些类只输入类名,然后输入类名。建议发生。

区别在哪里?特别是我正在谈论的课程是:

WebDriverWait - 需要实例化

ExpectedConditions - 不需要实例化。

3 个答案:

答案 0 :(得分:0)

与其他帖子中提到的一样,此功能受static关键字的约束。在面向对象编程中,我们有两种类型的变量/方法,即:

  1. 班级
  2. 实例级别
  3. 类级变量/方法在定义时由关键字static作为前缀,而实例级变量/方法则不是。当我们想要定义在类的不同实例之间没有差异的事物时,我们使用静态变量/方法。我们可以创建类的实例并使用引用来调用静态方法/变量,但是按照惯例,这是避免的,因为静态变量/方法属于类而不是特定的实例。

    您可以阅读有关静态关键字here的更多信息。

答案 1 :(得分:0)

其实很简单。
每当创建类的对象,即实例化类时,运行时系统就会为该对象/实例创建所有变量和类方法的副本,这些变量和方法称为实例成员。现在我们的对象将只使用这些复制成员。要访问这些成员,我们使用 obejctname.member 相比之下,有一种叫做类成员的东西。使用 static 关键字定义类成员。这意味着类将只创建这些成员的单个副本,而不管创建了多少个实例。要访问这些成员,我们使用 classname.staticmember

举一个简单的例子:
我们有一个名为 Person 的类。它有实例变量,如名称,年龄和实例方法,如run(),sleep()。类包含一个静态方法salary()。

public class Person {

    //Instance Members
    private String name;
    private int age;

    public void run() {

    }

    public void sleep() {

    }

    //Class Member
    public static void salary() {

    }

    public static void main(String[] args) throws IOException {
        Person person1 = new Person();
        Person person2 = new Person();

        //accessing instance members

        String person1NameInMain = person1.name;
        int person1AgeInMain = person1.age;

        person1.run();
        person2.sleep();

        Person.salary(); // accessing static member

    }
}

这就是全部。我希望这会有所帮助。

答案 2 :(得分:-1)

U应该通过java中的static关键字。

当你将方法定义为static时,不需要创建对象,你可以直接调用className.methodName()。

public class add{
    public static class addTwoNumber(int a, int b) {
        return a+b;
    }
}

public class staticTest{
   public static void main(String args[]) {
      system.out.println(add.addTwoNumber(2,2));
   }
}