一、final关键字
final的意思为最终、不可变
final可以修饰类、局部变量、类的成员2
特点:
- final修饰的类不可以被继承,但是可以继承其他类
- final修饰的方法不可以被覆盖(重写),但父类中没有被final修饰方法,子类覆盖后可以加final
- final修饰的变量称为常量,这些变量只能赋值一次,定义时必须有初始值
- final修饰的引用类型变量,表示该引用变量的引用不能变,引用所指的对象中的数据可以变化的
针对第四条->
意思为当new一个对象时,如果这个引用变量是由final修饰,则这个对象存的值可以改变
比如:
final Cat cat1 = new Cat("小黑");
cat1.setName("笑笑");
final 通常用在以下情况:
当程序中一个数据是固定不变的,这时为了增加阅读性,可以给该数据起个名字。为了保证这个变量的值不被修改,加上final修饰,变量就为阅读性很强的常量。书写规范,被final修饰的常量名所有的 字母都是大写的。如果由多个单词组成单词间通过 _ 连接。
二、static关键字
什么是static关键字?
在类中,用static声明的成员变量为静态成员变量,也成为类变量。类变量的生命周期和类相同,在整个应用程序执行期间都有效。
什么时候用static关键字?
定义功能时,如果功能不需要访问类中定义的成员变量(非静态)时,该功能就需要静态修饰
静态方法使用注意事项:
- 静态随着类的加载而加载,随着类的消失而消失
- 静态先于对象存在,被对象共享
- 静态修饰的方法中无法访问非静态的属性和方法,因为静态先存在于内存中,无法访问后来的对象中的数据,所以静态无法访问非静态,内部无法书写this,这时候对象可能不存在,this没有任何指向
注意事项:
1. 静态方法不能访问非静态的成员。但是非静态可以访问静态成员的。
说明:
- 静态的弊端在于访问出现局限性。
- 好处是可以直接被类名调用。
2. 静态方法中不允许出现this,super关键字。
三、内部类
内部类即写在其他类中的类,比如在描述电脑时,电脑内部包含有散热器,这时散热器可以使用内部类来描述。
class Computer{
//外部类的成员变量
int price = 4000;
//写在Computer成员位置上的内部类
class Fan{
//内部类的成员函数
void show(){
//在内部类中访问外部类的成员函数
System.out.println("Computer price = " +price);
}
}
}
内部类访问规则:内部类可以访问外部类中的成员,但外部类不能直接访问内部类,若要访问,就要创建内部类对象