[英]Method to take in values for parameterized constructor
我在这里遇到问题。 有人告诉我通过参数化构造函数初始化值。 编写方法“ getInput”以获取这些属性的值,调用参数化的构造函数,然后返回Child对象。
我认为这就是我所做的...但是当我调用该方法时,我得到的是这样的:Child @ 75d9fd51这仅仅是对象引用吗? 我正在尝试打印输入的年龄,姓名和等级。 先感谢您!
到目前为止,这就是我所拥有的:
import java.util.Scanner;
class Child{
int age;
String name;
char grade;
public Child(){
}
public Child(int age, String name, char grade) {
this.age = age;
this.name = name;
this.grade = grade;
}
public int getAge() {
return age;
}
public void setAgel(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public char getGrade() {
return grade;
}
public void setGrade(char grade) {
this.grade = grade;
}
}
public class Data {
public static Child getInput(Child s){
Scanner input = new Scanner(System.in);
System.out.println("Input age: ");
int age = input.nextInt();
System.out.println("Input name: ");
String name = input.next();
System.out.println("Input grade: ");
char grade = input.next().charAt(0);
s = new Child(age, name, grade);
return s;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Child x = new Child(20, "James", 'A'); //I want this to be changed with input
getInput(x);
System.out.print(x);
}
覆盖子类中的toString
方法
public String toString(){
return age + " " + name + " " + grade;
}
当您在代理类(即数据)中运行此行时
public static void main(String...args){
Child x = new Child(20, "James", 'A');
System.out.print(x.toString());
}
输出:
Input age:
32
Input name:
izak
Input grade:
A
32 izak A
不,“ Child @ 75d9fd51”不是对象引用。 它是存储在Child类的实例x中的数据。 在Java编程语言中,每个类都提供一个hashCode()方法,该方法将存储在该类实例中的数据摘要为单个哈希值(32位带符号整数)。
如果要获取输入数据并打印输入的数据(年龄,姓名和等级),则应进行一些更改:
首先,更改getInput(x);
到x = getInput(x);
。 该语句将新类别分配给类别x。
二,放方法
public String toString() {
return "Input age: " + getAge() + "\nInput name: " + getName() + "\nInput grade: " + getGrade();
}
内孩子课。 当您调用System.out.print(x);
在主要方法上, System.out.print(x.toString());
实际上被称为。
通用Object
没有特定的可打印表示形式,因为Java不能仅仅猜测您要如何打印它。 因此,您获得的是内存中的引用。
但是该语言为您提供了Object
类的public String toString()
方法,可以重写该方法以提供您想要的特定表示形式。 将对象传递给println
方法时,将自动调用此方法。
例如:
class Child {
public String toString() {
return name + "," + grade + "," + age;
}
}
传递对象时, System.out.println()
将打印出对象的toString
方法的结果。 默认输出采用您看到的格式。 如果您想查看更多有用的信息,则可以分别传递字段
System.out.println("Age: " + x.getAge());
System.out.println("Name: " + x.getName());
System.out.println("Grade: " + x.getGrade());
或者您可以重写Child
上的toString
方法:
@Override
public String toString() {
return "Age: " + this.age + ", Name: " + this.name + ", Grade: " + this.grade;
}
现在,您可以像以前一样调用System.out.println(x)
。
附带说明一下,创建并传递Child
的实例只是用getInput
的新实例替换它是没有意义的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.