final:最终
final是一个修饰符
final可以修饰:
(1)类:包括内部类和外部类
(2)方法
(3)变量:包括属性和局部变量
1.final修饰类
表示这个类不能被继承,是个太监类,没有子类
2.final修饰方法
表示这个方法可以被子类继承,但是不能被子类重写
3.final修饰变量
表示它是一个常量,值不能被修改
native:原生的,内置的
是一个修饰符,只修饰方法
native修饰的方法,说明不是用Java语言实现的方法体,而是用C语言等实现的,用C语言实现后,编译为.dll文件,然后由Java代码调用。
对于使用这个方法的人来说,没有区别,和普通的Java方法一样
该怎么调用就怎么调用,子类继承后如果需要重写,就可以重写。
调用方法的规则:
(1)静态的用类名,非静态的用对象
(2)有形参,传对应个数、类型的实参
(3)有返回值就接收,没有返回值就不接收
1.权限修饰符:
public protected 缺省 private
public/缺省:修饰类(包括内部类和外部类)、方法、属性、构造器
protected/private:修饰内部类、方法、属性、构造器
2.static
修饰:内部类、属性、方法、代码块
3.final
修饰:修饰类(内部类、外部类)、属性、方法、局部变量
4.native
修饰:方法
总结:
构造器只允许权限修饰符
局部变量:只允许final
5.abstract:抽象的
abstract也是修饰符,可以修饰:类(外部类和内部类)、方法
(1)为什么要使用抽象类和抽象方法
当我们在设计父类时,发现某些方法是无法给出具体的实现,具体的实现应该在子类中实现,那么这样的方法,在父类中就可以设计为抽象方法。包含抽象方法的类,必须是一个抽象类。
(2)抽象类、抽象方法的语法格式
【权限修饰符】 abstract class 类名{
【权限修饰符】 abstract 返回值类型 方法名(【形参列表】);
}
(3)抽象类的特点
》抽象类不能直接new对象
》抽象类就是用来被继承的,那么子类继承抽象类后,必须实现抽象类的所有抽象方法,否则子类也得是抽象类。
》抽象类的变量可以与子类的对象构成多态引用,执行子类重写的方法
》抽象类可以和普通类一样,拥有:属性、构造器、代码块、非抽象的方法等成员,这些给子类可以用。
》一个类如果有抽象方法,这个类必须是抽象类,但是一个抽象类也可以没有抽象方法,目的就是不能创建对象。
需求:
设计一个图形类Graphic,这个图形类有很多子类:Rectangle矩形、Circle圆形、Triangle三角形等,这些图形有图形名称,图形的面积、图形的周长,既然所有的子类有共同的特征,那么这些共同的特征应该设计到父类图形类Graphic中,因为父类就是代表所有子类共同的部分。
类:一类具有相同特征的事物的抽象描述。
1.权限修饰符
public,protected,缺省,private
(1)private和abstract不能同时修饰方法,因为private的方法在父类中不可见,无法重写。
(2)private和abstract可以同时修饰成员内部类。
2.static
static修饰属性、方法、代码块、内部类
abstract修饰方法、类
两者组合可以修饰内部类
但是不能同时修饰方法,因为static的方法不能被重写,并且static的方法直接用“类名.”调用,没有方法体执行。
3.final
修饰方法:final和abstract不能同时修饰方法,final是表示不能被重写,abstract必须被重写。
修饰类:final和abstract不能同时修饰类,final表示不能被继承,abstract就是用来继承的。
4.native
修饰方法:native和abstract不能同时修饰方法,native是表示方法体由C语言实现,abstract表示无方法体,由子类实现。