this关键字和super关键字分别代表什么?如何利用this关键字访问形参为(int x)构造方法?如何利用super关键字访问父类的无参构造方法。
时间: 2024-03-15 15:47:32 浏览: 16
this关键字代表当前对象,可以用来访问当前对象的属性或方法;也可以用来调用当前类的其他构造方法。super关键字代表当前对象的父类对象,可以用来访问父类的属性或方法,也可以用来调用父类的构造方法。
要利用this关键字访问形参为(int x)构造方法,可以使用以下代码:
```
public class MyClass {
private int x;
public MyClass(int x) {
this.x = x;
}
public MyClass() {
this(0); // 调用形参为(int x)的构造方法
}
}
```
要利用super关键字访问父类的无参构造方法,可以使用以下代码:
```
public class SubClass extends SuperClass {
public SubClass() {
super(); // 调用父类的无参构造方法
}
}
```
如果父类没有无参构造方法,需要调用父类的有参构造方法,可以使用以下代码:
```
public class SubClass extends SuperClass {
public SubClass(int x) {
super(x); // 调用父类的有参构造方法
}
}
```
相关问题
java中调用父类作为方法形参是什么形式
在Java中,调用父类作为方法形参可以使用以下形式:
1. 如果父类有无参构造函数,则可以使用父类的类名直接调用。
```java
public class Parent {
public void method() {
System.out.println("Parent method");
}
}
public class Child extends Parent {
public void callMethod() {
Parent parent = new Parent();
parent.method();
}
}
```
2. 如果父类没有无参构造函数,则需要使用super关键字调用父类的有参构造函数。
```java
public class Parent {
public Parent(int arg) {
System.out.println("Parent constructor with arg: " + arg);
}
public void method() {
System.out.println("Parent method");
}
}
public class Child extends Parent {
public Child() {
super(1);
}
public void callMethod() {
Parent parent = new Parent(2);
parent.method();
}
}
```
定义一个Student类,继承Person类,有String类型的属性ID和int类型的属性classes。 定义无参构造器,每次无参构造器被调用会在控制台打印"创建一名学生。 定义有参构造器,构造器有String类型的形参name,String类型的形参gender,int类型的形参age,String类型的形参ID和int类型的形参classes,调用此构造器首先会使用name、gender和age三个形参通过super关键字调用父类构造器赋值,再利用形参和this关键字为此对象的ID届属性和 classes届性赋值。 定义Test类,在其中定义main方法。在main方法中首先使用无参构造器获得Teacher类对象t和Student类对象s,再使用一名你熟悉的学校老师的信息和你自己以及一位你的室友的信息,得到另外的Teacher对象 (t1)和2位Student对象 (s1和s2)。打印输出对象信息,每行一人。
这是如何定义Student类和有参构造器的代码:
```
class Student extends Person {
String ID;
int classes;
// 无参构造器
Student() {
System.out.println("创建一名学生。");
}
// 有参构造器
Student(String name, String gender, int age, String ID, int classes) {
super(name, gender, age); // 调用父类构造器
this.ID = ID;
this.classes = classes;
}
}
```
这是如何在Test类的main方法中使用构造器创建Teacher和Student对象的代码:
```
public class Test {
public static void main(String[] args) {
// 使用无参构造器创建Teacher和Student对象
Teacher t = new Teacher();
Student s = new Student();
// 使用有参构造器创建Teacher和Student对象
Teacher t1 = new Teacher("张老师", "男", 35, "数学");
Student s1 = new Student("李小龙", "男", 20, "123456", 3);
Student s2 = new Student("王小丽", "女", 19, "987654", 2);
// 打印输出对象信息
System.out.println(t.name + " " + t.gender + " " + t.age + " " + t.subject);
System.out.println(s.name + " " + s.gender + " " + s.age + " " + s.ID + " " + s.classes);
System.out.println(t1.name + " " + t1.gender + " " + t1.age + " " + t1.subject);
System.out.println(s1.name + " " + s1.gender + " " + s1.age + " " + s1.ID + " " + s1.classes);
System.out.println(s2.name + " " + s2.gender + " " + s2.age + " " + s2.ID + " " + s2.classes);
}
}
```
请注意,这是假设Person类已经存在,并且具有String类型的属性name、gender和int类型的属性age,以及有参构造器。