为什么要创建一个类的新实例?

时间:2018-03-18 00:26:11

标签: java class

我一直在为Java编写一些教程,他们都说要在调用类时创建一个新变量。为什么是这样?我已经测试了一些代码,但它没有这样做。 我已经使用python很长一段时间了,所以我习惯使用动态语言。

请看下面我一直在玩的一些代码:

import java.util.Scanner; 

class MyClass {

    static String myName(String name) {
        return ("Your name is: "+name);
    }
    static String myAge(Integer age){
        return ("Your age is: "+age);
    }
    static String myGender(String gender){
        return ("You are: "+gender);
    }
}

class Test{
    public static void main(String [ ] args){
        Scanner ui = new Scanner(System.in);

        MyClass user = new MyClass();

        //Output with new variable of class - user
        String input = ui.next();
        String newname = user.myName(input);
        System.out.println(newname);

        //Output calling class directly
        Integer input1 = ui.nextInt();
        String newage = MyClass.myAge(input1);
        System.out.println(newage);

        //Output with new variable of class - user
        String input2 = ui.next();
        String newgender = MyClass.myGender(input2);
        System.out.println(newgender);

    }

}

感谢您的时间。

2 个答案:

答案 0 :(得分:4)

如果类中的所有内容都是static(如您发布的代码中所示),那么就不需要创建类的实例。但是,如果该类具有实例字段和/或方法,那么故事就不同了。例如,考虑这样一个类:

class Person {
    private String name;
    private int age;
    private String gender;

    public Person(String name, int age, String gender) {
        this.name = name;
        this.age = age;
        this.gender = gender;
    }

    String myName() { return "Your name is: " + name; }
    String myAge() { return "Your age is: " + age; }
    String myGender() { return "You are: " + gender; }
}

然后,您可以创建具有不同内部状态的多个Person实例,并在代码中交替使用它们:

public static void main(String[] args) {
    Person jim = new Person("Jim", 40, "male");
    Person sally = new Person("Sally", 12, "female");

    report(jim);
    report(sally);
}

private static report(Person person) {
    System.out.println(person.myName());
    System.out.println(person.myAge());
    System.out.println(person.myGender());
}

答案 1 :(得分:0)

如果我们使用static关键字创建任何成员,它会立即为所有对象获取内存,当我们在类中具有公共属性时我们使用静态关键字,并且我们不想为所有实例对象创建单独的内存...它确实'我需要创建实例变量来调用它,这个静态块可以共享给所有对象....例如,如果我们有Animal类,我们想描述5种不同类型的狗...比我们没有定义颜色,大小像静态属性...因为它们都有自己不同的大小和颜色....我希望你得到它