创建具有不同参数长度的类

Posted

技术标签:

【中文标题】创建具有不同参数长度的类【英文标题】:Creating a class with different argument lengths 【发布时间】:2013-09-19 10:34:05 【问题描述】:

如何创建具有不同长度参数的类?

public static void main(String[] args) 
    group g1 = new group("Redskins");
    group g2 = new group("Zack", "Mills", 21);
    group g3 = new group("John","Smith",20);
    group g4 = new group("Fred","Fonsi",44);
    group g5 = new group("Jeb","Bush",26);


    System.out.println(g1.getName());

我希望能够显示团队名称(redskins),然后使用一种方法显示每个成员。

我尝试过使用两种方法,但都无法使用。

我在考虑是否可以使用数组,但不确定是否可行。

感谢您的帮助。

我有三个班级,主班、学生班和小组班。 我需要组类来显示组名,然后弄清楚如何在下面显示学生信息。唯一的问题是,我的任务对于是否可以使用两种或一种方法含糊不清。

public class student 
    String firstName;
String lastName;
    int age; 
    student(String informedFirstName, String informedLastName, int informedAge)
        firstName = informedFirstName;
        lastName = informedLastName;
        age = informedAge;
    

    String getName()

    return "Name = " + firstName + " " + lastName + ", " + "Age = " + age;


   

【问题讨论】:

能把你已经实现的相关类和方法的源码贴在这里吗? 不清楚你想在这里做什么;作为球队的“红皮队”和作为球员的“扎克米尔斯”是非常不同的东西,他们应该由不同的班级代表。 (另外,将您的类名大写,例如Group;这是一种通用的 Java 约定,使您的代码更易于阅读。) 如果你使用两个类,你能用一种方法吗?我猜这两个类的方法相同吗?谢谢 【参考方案1】:
public class Team
   String name;
   Set<Player> players;

   public Team(String name)
      this.name = name;
   

   public void addPlayer(Player p)
      players.add(p);
   



public class Player
   String name;
   etc

修改问题:

好的,我会在这里展示很多。这是您想要的学生的正确 Java 版本。

public class Student 

    private String firstName;
    private String lastName;
    private int age;

    public Student(String firstName, String lastName, int age)
        this.firstName = firstName;
        this.lastName = lastName;
        this.age = age;
       

    /*
     * Use:
     * Student s = new Student(Bill, Nye, 57);
     * System.out.println(s.toString()); 
     */
    @Override
    public String toString()       
        return "First Name: " + firstName + ", Last Name: " + lastName + ", Age: " + age;
    

    public String getFirstName() 
        return firstName;
    

    public void setFirstName(String firstName) 
        this.firstName = firstName;
    

    public String getLastName() 
        return lastName;
    

    public void setLastName(String lastName) 
        this.lastName = lastName;
    

    public int getAge() 
        return age;
    

    public void setAge(int age) 
        this.age = age;
    

从这里带走的东西。 1)类名的首字母大写! (学生)

2) 请注意,类变量是私有的(在此处查找教程Java Class Accessibility)并且具有 getter 和 setter 来控制类外的访问。

3) 我不说“getName()”并返回姓名和年龄。这没有意义。相反,我做到了,所以当你去toString() 时,它会显示所有相关信息。

4) Java 是一种面向对象的语言,这意味着模型数据的类(在某种程度上)应该根据它们在现实生活中的使用方式适当地建模。这使阅读您的代码的人更直观。

5) 如果您的 Group 类(注意大写!)需要包含许多 Student,请使用 LIST,例如 ArrayList。数组没有意义,因为您不知道每个组中有多少学生。我上面使用的 SET 类似于列表,但每个项目只允许一个。为简单起见,请使用列表

6) THIS 运算符引用类(对象)变量。在构造函数中 this.firstName 指的是 Class 中的 firstName(对象...类的一个实例),而 firstName 将指代构造函数中的变量而不改变类变量。

【讨论】:

这个有教程吗。操作员?我一直在阅读我的一本教科书,但我需要额外的例子来更好地处理它。谢谢。 this 只是对当前对象的引用,没有什么特别之处。大多数情况下,您可以避免它,除非某个范围内的变量名称与对象类的属性名称相同。【参考方案2】:

为此使用构造函数

     class group 
    String fname,lname;

     group(String fname )
    this.fname=fname;
    
    group(String fname,String lname)
    this.fname=fname;
    this.lname=lname;

    
    group(String fname,String lname,int age)
    this.fname=fname;
    this.lname=lname;
    this.age=age;
    

  public  String getName()

return fname+lname+age;    

    

【讨论】:

这在技术上为 OP 提供了他/她所要求的,但 Alex 建议的代码才是真正应该使用的。这并不能准确反映程序需要建模的内容,而这正是面向对象编程的重点。 在一个构造函数中你不能传递所有的参数......泛型只是为了不同的参数的数据类型..

以上是关于创建具有不同参数长度的类的主要内容,如果未能解决你的问题,请参考以下文章

所有参数都应具有相同的长度。参数 `y` 的长度是 6,而前面的参数 ['year'] 的长度是 100

python怎样创建具有一定长度和初始值的列表

Scala,强制数组/集合参数的长度

可变长度的字符

具有不同长度数组的熊猫

Dash Plotly 如何修复“所有参数应具有相同的长度。x 和 y”