当前位置: 首页 > 知识库问答 >
问题:

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

仲孙才捷
2023-03-14

我已经完成了一些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个答案

伍宝
2023-03-14

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

耿俊彦
2023-03-14

如果类中的所有内容都是静态的(就像你发布的代码一样),那么就不需要创建类的实例。然而,如果类要有实例字段和/或方法,那么情况就不同了。例如,考虑这样一个类:

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());
}
 类似资料:
  • 我想知道为什么你能做到 不需要这样创建实例 有没有可能创建一个不需要实例的类?如果你能创建一个这样的类,你会怎么做?我在寻找类似 而不是必须这样做

  • 问题内容: 所以我的任务听起来很简单,但是却使我感到困惑。我已经浏览了Internet上的代码,但无法掌握。我也无法掌握老师张贴的幻灯片。这是我的要求。 创建一个新的运行时异常类型,称为EmptyStackException。 但是,我不知道如何制作方法,类,变量或满足要求所需的任何内容。我有一些类是DynamicArrayStack和LinkedStack的实现。堆栈的接口。 任何指针将大有帮助

  • 每一个国家的都有其特殊国情,主要是原因是中国的网络太慢,及中国存在大量老旧的计算机,它们预装着window XP,IE浏览器最高只能升级到IE8, 出于这两方面的原因,我们需要一个体积更少,兼容性更好的React。并且之前facebook也闹过LICENSE问题,更是促进中国互联网公司决定自主研发框架,努力摆脱对外国框架的依赖。 对于我们公司而言,一个旅游公司, 在线上订火车票,飞机票, 景点门票

  • 考虑类<代码> OuterClass < />代码> <代码> InnerClass < /代码> 第二个类,它试图扩展

  • 问题内容: 我一直在关注Docker教程,并通过对现有映像进行更改并用三个不同的标签对其进行标记,在本地OSX计算机上构建了测试映像: 但是,这些图像都没有摘要: 我使用Dockerfile创建的其他测试映像也有摘要。 为什么有些图像有摘要,而有些则没有? 它与创建映像的方式(是否为Dockerfile)有关吗? 问题答案: 首先,请记住,摘要可以代表一个,一个图层或它们的组合(我们通常将该组合称

  • 假设我有一个名为的类,并且创建了一个新的空对象: 中的构造函数是: 、和是否等于空? 如果不是,有没有办法让我创建对象,使所有三个实例变量都是?