目录
this关键字和final关键字
一、this关键字引入
定义一个有参的构造方法:
class Person{
int age;
public Person(int a){
age = a;
}
public void speak(){
System.out.println("我今年"+age+"岁了!");
}
public class Test{
public static void main (String[] args){
Person person = new Person(18);
person.speak();
}
}
}
存在问题:
- 上述有参构造方法中,成员变量age和参数a之间赋值,语法没有任何问题,但是程序的可读性很差;
- 如果参数也修改为age,那么就会导致成员变量和局部变量产生冲突;
于是:this关键字,它来了!
二、this关键字用法详解
2.1、this关键字调用成员变量
通过使用this关键字来解决冲突:即解决了成员变量和局部变量的命名重读,也提高了程序的可读性
class Person{
int age;//成员变量
public Person(int age){//局部变量
this.age = age;//局部变量赋值给成员变量
}
}
2.2、this关键字调用成员方法
通过使用this关键字,来调用自己的成员方法
class Person{
public void openMounth(){
}
public void speak(){
this.openMounth();
openMounth();//这两种都可以,效果都一样
}
}
2.3、this关键字调用构造方法
通过使用this关键字来调用构造方法–这个明白this关键字有这个功能就行
class Person{
int age;
public Person(){
System.out.println("调用了无参的构造方法!");
}
public Person(int age){
this();
System.out.println("调用了有参的构造方法!");
}
}
public class Test {
public static void main(String[] args) {
Person person = new Person(18);
}
}
注意:
- 只能在构造方法中,使用this关键字来调用其他构造方法;不能在成员方法中使用;
- 在构造方法中调用其他构造方法时,调用语句要放在第一行
- 不能在一个类的两个构造方法中互相调用
三、final关键字
final修饰的类不能被继承
final修饰的方法不能被子类重写
final修饰的变量为常量(不可改变)
- final修饰全局变量必须在声明的同时直接赋值
- final修饰的局部变量可以在声明后再赋值