Java的关键字

64 阅读3分钟

Final关键字

final:表示最终的,最后的,主要用来修饰类、函数和变量;

final 修饰变量

表示这个变量的值不能被修改;

因为被final修饰的变量的值不可改变,所以java中都使用它表示常量;

如果是常量,变量名的写法是:所有字母全部大写,多个单词之间使用下划线连接;

image.png

final 修饰类****

直接写在class关键字前面,表示这个类不能被继承;

final 修饰函数****

直接写在函数的返回值类型前面,表示这个函数不能被重写,但是可以被继承;

abstract关键字

案例:创建类描述猫和狗的行为;

猫的行为:抓老鼠;吃鱼;

狗的行为:看家;吃骨头;

分析:这个需求有两类事物,需要创建两个类来分别描述它们;

创建描述猫的类:

image.png

问题:上面两个类中有相同的方法

为了提高代码的复用性,需要将其抽取到共同的父类中;猫和狗都是动物,所以可以创建一个动物类,让猫和狗都继承它:

问题:在抽取共同方法到父类中的过程中发现,不同子类虽然具有相同的方法,但是不同子类的实现不同,在父类中无法准确描述;

像这种在父类中不能准确描述、需要子类去实现的方法,就应该定义为抽象方法;

抽象方法的书写格式:

A:抽象函数没有方法体,连大括号都没有;

B:抽象函数使用关键字abstract修饰,关键字写在函数的返回值类型前面;

抽象函数表示的是描述不清的功能;如果一个类中有了抽象函数,说明这个类表示的事物也是描述不清的,需要定义为抽象的类;

抽象类的书写格式:

直接将abstract关键字写在class关键字前面;

抽象类特点

1、抽象类不能实例化;

2、抽象类中的抽象函数必须由子类去实现,否则子类也是抽象类;

3、抽象类也是一个类,类中可以书写所有成员,也可以没有抽象函数;

4、因为抽象函数必须由子类实现,所以不参与继承的(private)和不能被子类重写的(final)关键字不能和abstract共存;

5、因为静态函数不需要类的对象就可以直接使用,所以static关键字也不能和abstract共存;

6、如果一个类不希望被实例化,但又希望被子类继承,就可以定义为抽象的,即使类中没有抽象函数;

普通类与抽象类的区别

1、普通类可以创建对象,抽象类不可以创建对象

2、普通类可以包含普通方法但是不能包含抽象方法,而抽象类既可以包含普通方法又可以包含抽象方法

3、抽象类中抽象方法不能使用private修饰,而普通类中方法可以使用private修饰