this关键字表示调用当前对象的什么什么;
super关键字表示调用父类的什么什么;
1、this调用属性:
//this关键字表示当前对象的什么什么
public class Test02 {
public static void main(String[] args) {
Student student = new Student("小七");
System.out.println(student.getName());
}
}
class Student{
private String name;
public Student(String name){
//此处this表示当前对象定义的name属性值,而非构造器中形参的name
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
'}';
}
}
输出结果
小七
2、this调用构造器:
注意:构造器可以使用this关键字显示的调用本类中其他的构造器;且“this(参数列表)”必须放在首行;
//this关键字表示当前对象的什么什么
public class Test02 {
public static void main(String[] args) {
Student student = new Student(18L,"小七");
System.out.println(student);
}
}
class Student{
private Long id;
private String name;
public Student(){
System.out.println("难道只有我是空参的构造方法吗?");
}
public Student(Long id) {
this();//调用空参的构造方法
System.out.println("输出的id值为:" + id);
this.id = id;
}
public Student(Long id, String name) {
this(id);//调用参数为id的构造方法
this.id = id;
this.name = name;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
输出结果为:
难道只有我是空参的构造方法吗?
输出的id值为:18
Student{id=18, name=‘小七’}
3、super调用父类的构造器、方法、属性:
public class Test03 {
public static void main(String[] args) {
Son son = new Son();
son.test();
}
}
class Son extends Person{
private String userName;
private String pwd;
public Son() {
//在本类中调用父类的构造器,按照参数列表调用父类构造器
super("父类:李四","父类:密码");
this.userName = "本类:张三";
this.pwd = "本类:密码";
}
public void test(){
//调用本类method方法
this.method();
//调用父类method方法
super.method();
//调用本类userName属性
System.out.println("本类中的userName=" + this.userName);
//调用父类userName属性
System.out.println("父类中的userName=" + super.userName);
}
public void method(){
System.out.println("本类->方法");
}
@Override
public String toString() {
return "Son{" +
"userName='" + userName + '\'' +
", pwd='" + pwd + '\'' +
'}';
}
}
class Person{
String userName;
String pwd;
public Person(String userName, String pwd) {
this.userName = userName;
this.pwd = pwd;
}
public void method(){
System.out.println("父类->方法");
}
@Override
public String toString() {
return "Person{" +
"userName='" + userName + '\'' +
", pwd='" + pwd + '\'' +
'}';
}
}
输出结果:
本类->方法
父类->方法
本类中的userName=本类:张三
父类中的userName=父类:李四