创建具有不同参数长度的类
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 建议的代码才是真正应该使用的。这并不能准确反映程序需要建模的内容,而这正是面向对象编程的重点。 在一个构造函数中你不能传递所有的参数......泛型只是为了不同的参数的数据类型..以上是关于创建具有不同参数长度的类的主要内容,如果未能解决你的问题,请参考以下文章