Java中this和super的用法
一、作为对象使用
1.this的用法
作为当前类的一个对象使用,一般用于封装中的getXxx()方法,调用当前类中的属性
package program;
public class Person {
private String name;//姓名
private int age;//年龄
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
2.super的用法
作为父类中的一个对象在子类中进行使用,调用父类中的getXxx()和setXxx()方法
“`
package program;
public class Student extends Person{
private String studentNo;//学号
public String getStudentNo() {
return studentNo;
}
public void setStudentNo(String studentNo) {
this.studentNo = studentNo;
}
public void test(){
super.setName("小明");
super.setAge(18);
this.setStudentNo("0144004");
String name = super.getName();
int age = super.getAge();
String studentNo = this.getStudentNo();
System.out.println("姓名: " + name + " 年龄 " + age + " 学号 " + studentNo);
}
public static void main(String[] args){
Student s = new Student();
s.test();
}
}
“`二、作为构造方法使用
super(参数):调用父类中的某一个构造函数(应该为构造函数中的第一条语句)。
this(参数):调用本类中另一种形式的构造函数(应该为构造函数中的第一条语句)。
class Person {
public static void prt(String s) {
System.out.println(s);
}
Person() {
prt("父类·无参数构造方法: "+"A Person.");
}//构造方法(1)
Person(String name) {
prt("父类·含一个参数的构造方法: "+"A person's name is " + name);
}//构造方法(2)
}
public class Chinese extends Person {
Chinese() {
super(); // 调用父类构造方法(1)
prt(“子类·调用父类”无参数构造方法“: “+”A chinese coder.”);
}
Chinese(String name) {
super(name);// 调用父类具有相同形参的构造方法(2)
prt("子类·调用父类”含一个参数的构造方法“: "+"his name is " + name);
}
Chinese(String name, int age) {
this(name);// 调用具有相同形参的构造方法(3)
prt("子类:调用子类具有相同形参的构造方法:his age is " + age);
}
public static void main(String[] args) {
Chinese cn = new Chinese();
cn = new Chinese("codersai");
cn = new Chinese("codersai", 18);
}
}
运行结果:
父类·无参数构造方法: A Person.
子类·调用父类”无参数构造方法“: A chinese coder.
父类·含一个参数的构造方法: A person’s name is codersai
子类·调用父类”含一个参数的构造方法“: his name is codersai
父类·含一个参数的构造方法: A person’s name is codersai
子类·调用父类”含一个参数的构造方法“: his name is codersai
子类:调用子类具有相同形参的构造方法:his age is 18