在main方法中为什么可以同时存在this和super
时间: 2024-03-31 15:34:33 浏览: 13
在Java中,this关键字表示当前对象,而super关键字表示父类对象。在子类中,可以通过super关键字调用父类的构造方法,也可以通过this关键字调用本类的构造方法。因此,在main方法中,如果该类继承了其他类,就可以同时使用this和super关键字。例如,可以在main方法中使用this关键字调用本类的构造方法,同时使用super关键字调用父类的构造方法来初始化父类的成员变量。
相关问题
java中super和this的用法代码实现
下面是使用Java代码演示super和this关键字的用法:
```java
class Person {
String name;
int age;
Person(String name, int age) {
this.name = name;
this.age = age;
}
void sayHello() {
System.out.println("Hello, I'm " + name + ", " + age + " years old.");
}
}
class Student extends Person {
String school;
Student(String name, int age, String school) {
super(name, age); // 调用父类的构造方法
this.school = school;
}
void study() {
System.out.println(name + " is studying at " + school + ".");
}
void sayHello() {
super.sayHello(); // 调用父类的方法
System.out.println("I'm a student.");
}
}
public class Main {
public static void main(String[] args) {
Student s = new Student("Tom", 18, "ABC School");
s.sayHello(); // 调用子类的方法
s.study(); // 调用子类的方法
}
}
```
在上面的代码中,Person是一个父类,Student是一个子类。在Student的构造方法中,使用super关键字调用了父类的构造方法,以初始化父类的成员变量。在子类中,重写了父类的方法sayHello,并使用super关键字调用了父类的方法。在子类中还定义了一个自己的方法study,用来演示子类的成员方法。在Main类中,创建了一个Student对象s,并调用了它的成员方法。
this 和 super 关键字有什么作勇,请写程序说明?
this 和 super 都是 Java 中的关键字,分别表示当前对象和父类对象。
this 关键字的主要作用是引用当前对象,可以用于以下几种情况:
1. 引用当前对象的成员变量或成员方法。
2. 在一个构造方法中调用另一个构造方法。
3. 在一个方法中返回当前对象。
super 关键字的主要作用是引用父类对象,可以用于以下几种情况:
1. 引用父类的构造方法。
2. 引用父类的成员变量或成员方法。
下面是一个使用 this 和 super 关键字的示例程序:
```java
class Animal {
String name;
public Animal(String name) {
this.name = name;
}
public void eat() {
System.out.println(name + " is eating.");
}
}
class Dog extends Animal {
String breed;
public Dog(String name, String breed) {
super(name);
this.breed = breed;
}
public void bark() {
System.out.println(name + " is barking, breed is " + breed);
}
}
public class Test {
public static void main(String[] args) {
Dog dog = new Dog("Tommy", "Labrador");
dog.eat();
dog.bark();
}
}
```
在上述程序中,Animal 类中有一个成员变量 name 和一个成员方法 eat,Dog 类继承了 Animal 类,并添加了一个成员变量 breed 和一个成员方法 bark。在 Dog 类的构造方法中,使用 super 关键字调用了 Animal 类的构造方法来初始化 name 成员变量。在 main 方法中,创建了一个 Dog 对象,并使用 this 和 super 关键字来引用对象成员和父类成员。