声明
1)该文章部分内容整理自网上的资料,如不小心侵犯了大家的权益,还望海涵,并联系博主删除。
2)博主是萌新上路,文中如有不当之处,请各位大佬指出,共同进步,谢谢。
this关键字
书上对于this的描述:
this 表示一个对象的引用,它指向正在执行方法的对象。特别的,在构造方法中,通过this关键字调用其他构造方法时,必须放在第一行,否则编译器会报错。且在构造方法中,只能通过this调用一次其他构造方法。
this 是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针。
this 的用法在 Java 中大体可以分为3种:
1.普通的直接引用
this 相当于是指向当前对象本身。
2.形参与成员名字重名,用 this 来区分
实例
class Person {
private int age = 10;
public Person(){
System.out.println("初始化年龄:"+age);
}
public int GetAge(int age){
this.age = age;
return this.age;
}
}
public class test1 {
public static void main(String[] args) {
Person Harry = new Person();
System.out.println("Harry's age is "+Harry.GetAge(12));
}
}
运行结果
初始化年龄:10
Harry's age is 12
3.引用构造函数
this(参数):调用本类中另一种形式的构造函数(应该为构造函数中的第一条语句)。
根据 this 出现位置的不同,this 作为对象的默认引用有两种情形:
①在构造器中引用该构造器正在初始化的对象。注:this就是正在被初始化的对象。可以调用属性字段。
②在方法中引用调用该方法的对象。注:this就是调用该方法的对象,可以调用该方法的方法。
this 用法
- 调用本类方法
- 调用本类属性
- 调用本类的其他构造方法
- 调用父类的或指定的其他的类的同名方法,为避免歧义而生的方法
- 隐藏式的调用,不指定范围,java会在全类范围内向上查找变量或方法
super关键字
java 中的 super 关键字是一个引用变量,用于引用父类对象。如果构造方法没有显示地调用父类的构造方法,那么编译器会自动为它加上一个默认的super()方法调用。如果父类由没有默认的无参构造方法,编译器就会报错,super()语句必须是构造方法的第一个子句。
super 可以理解为是指向自己超(父)类对象的一个指针,而这个超类指的是离自己最近的一个父类。
super 有三种用法:
1.普通的直接引用
与 this 类似,super 相当于是指向当前对象的父类,这样就可以用 super.xxx 来引用父类的成员。
2.子类中的成员变量或方法与父类中的成员变量或方法同名
实例
class Country {
String name;
void value() {
name = "China";
}
}
class City extends Country {
String name;
void value() {
name = "Shanghai";
super.value(); //调用父类的方法
System.out.println(name);
System.out.println(super.name);
}
public static void main(String[] args) {
City c=new City();
c.value();
}
}
运行结果
Shanghai
China
可以看到,这里既调用了父类的方法,也调用了父类的变量。若不调用父类方法 value(),只调用父类变量 name 的话,则父类 name 值为默认值 null。
3.引用构造函数
super(参数):调用父类中的某一个构造函数(应该为构造函数中的第一条语句)。