开发工具与关键技术:Java
作者:吴永旗
撰写时间:2019年5月10日
- this在类中就是代表当前对象,可以通过this关键字完成当前对象的成员的属性,
成员方法和构造方法。 - 什么时候使用this?
当在定义类中的方法时,如果需要调用该对象,就可以this来表示这个对象。
也就是说,但凡在本类功能内部使用到了本类对象,都用this表示。至于那个对象
就得看其所在功能被哪个对象调用。 - this的使用
——可以解决成员属性和局部变量同名冲突
//成员属性
private String name;//名字
private int age;//年龄
public Dog(String name){
this.name=name;//如果在构造器方法里使用(name=name),那么其是赋值给它本身,而不是赋值给类里面的属性name
System.out.println(“我是参构造器”);
}
——可以调用成员方法
//小狗叫的方法
public void bark(){
this.eat();//调用小狗吃的方法
System.out.println(“小狗叫”);
}
//小狗吃的方法
public void eat(){
System.out.println(“小狗吃鸡”);
}
——可以调用重载的构造方法
public Dog(){
System.out.println(“我是无参构造器”);
}
public Dog(String name){
this ();//必须是构造方法的第一条语句
this.name=name;
System.out.println(“我是有参构造器”);
} - super是指子类对父类对象的引用
——访问父类的成员方法
——访问父类的成员属性
——访问父类的构造方法
——不能在静态方法使用
而this是指当前类对象的引用
——访问当前类的成员方法
——访问当前类的成员属性
——访问当前类的构造方法
——不能在静态方法使用 - super调用注意事项:
- 子类的构造的过程中必须调用其父类的构造方法;
- 如果子类的构造方法中没有显示调用父类的构造方法,则系统默认调用父类无参的构造方法;
- 如果子类构造方法中既没有显式调用父类构造方法,而父类又没有无参的构造方法,则编译出错;
- 使用super调用父类指定构造方法,必须在子类的构造方法第一行;
例: