public class Person {
private int age;
public Person(int initialAge) {
if (initialAge<= 0) {
System.out.println("Age is not valid, setting age to 0.");
}
else {
age = initialAge;
}
// Add some more code to run some checks on initialAge
}
public void amIOld() {
if (age < 13) {
System.out.print("You are young.");
}
else if (age >= 13 && age < 18) {
System.out.print("You are a teenager.");
}
else {
System.out.print("You are old.");
}
// Write code determining if this person's age is old and print the correct statement:
System.out.println(/*Insert correct print statement here*/);
}
public void yearPasses() {
age += 1;
}
public static void main(String[] args {
Scanner sc = new Scanner(System.in);
int T = sc.nextInt();
for (int i = 0; i < T; i++) {
int age = sc.nextInt();
Person p = new Person(age);
p.amIOld();
for (int j = 0; j < 3; j++) {
p.yearPasses();
}
p.amIOld();
System.out.println();
}
sc.close();
}
}
在上面的代码中,当使用参数创建person类的实例时,它是否会自动调用类中的Person方法?
是代码 人p =新人(年龄); 构造函数或方法调用?是吗? 使用与该类同名的方法的目的是什么? 它是如何运作的?
答案 0 :(得分:0)
我个人而言,不喜欢与其所在类相同的nam方法,但是:
public class Person {
public Person() {} // constructor
public void Person {} // method
public static void main(String... args) {
Person p = new Person();
p.Person();
}
}
通常,班级名称应为名词,而方法名称应为动词。
答案 1 :(得分:0)
这就是构造函数。当你创建一个像这样的新实例时,它就会被破坏:Person me = new Person(99);
您可以拥有多个构造函数,如:
enter code here
public Person(int initialAge) {
if (initialAge<= 0) {
System.out.println("Age is not valid, setting age to 0.");
}
else {
age = initialAge;
}
}
public Person() {
age = 0;
}
在同一个班级。在这种情况下,如果您创建这样的实例:像这样:Person me = new Person(99);
只调用第一个构造函数,如果您创建这样的实例:Person me = new Person();
只有第二个(除非您有一个引用当然其他)。
答案 2 :(得分:0)
一个名为类的mehtode,没有void或任何返回类型称为构造函数。
class MyClass {
public MyClass () {
//constructor code here
}
}
每个calss都有一个默认的构造函数(如上所示),不需要写出来使用(由编译器生成),但它可能会被过度压缩和重载以获得更多功能。 每次生成类的对象时都会调用构造函数。
class Person {
pulbic int age;
public Person (int age) {
this.age = age;
}
}
class Main {
public static void main(String args[]) {
//creating 2 objects of person
Person p1 = new Person(23)
Person p2 = new Person(51)
}
}
该程序现在生成2个对象,对象p1在年龄变量中保存值23,而对象p2在年龄变量中保存值51。
年龄由使用new Person(int age)
语句调用的构造函数设置。
如果你还没有初始化一个类vriable(在这种情况下是int age
)但是在构造函数上设置它的值,那么它将被类的其余部分处理,就好像它是用特定值初始化一样。
您可以强制程序员使用构造函数在创建类时设置类的特定属性,并且可以确保设置此值。
如果重载构造函数,可以使用:
调用另一个构造函数this(/*Overloaded parameters*/);
构造函数也不能调用类的任何方法(exept其他构造函数),因为在构造函数运行时类没有完全生成。
答案 3 :(得分:-1)
创建类的对象时
构造函数不是一个方法,因为它没有任何返回类型。如果没有在类中定义构造函数,则会自动调用默认构造函数。 否则,在创建对象时将调用特定的构造函数。