【抽象类】:
所谓抽象类就是只声明方法的存在而不去具体实现它的类。抽象类不能被实例化,也就是不能创建其对象。在定义抽象类时,要在class前面加上abstract。
格式:
abstract class 类名{
类体
}
【抽象方法】:
在抽象类中创建的、没有实现的、必须要子类重写的方法称为抽象方法,抽象方法只有方法的声明,而没有方法的实现,需要用abstract关键字修饰。
格式: abstract <方法返回值类型> 方法名(参数列表);
例如:public abstract void harvest();
(注):抽象方法不能使用private或者static关键字修饰
包含一个或者多个抽象方法必须被声明为抽象类,这是因为抽象方法没有定义方法的实现部分,如果不声明为抽象类,这个类将可以生成对象,这是当用户调用抽象方法时,程序就不知道该如何处理了。
【抽象类和抽象方法的规则】:
(1)抽象类必须使用abstract修饰,抽象方法也必须用abstract。
(2)抽象类不能被实例化,无法使用new关键字来调用抽象类的构造器创建抽象类的实例,即使抽象类不包括抽象方法,这个抽象类也不能创建实例。
(3)抽象类可以包含属性、方法(普通方法和抽象方法),构造器,初始化块,内部类,枚举类。抽象类的构造器不能用于创建实例,主要是用于被其子类调用。 抽象类中的普通方法也只能通过子类的继承才能使用。
(4)含义抽象方法的类(包括直接定义了一个抽象方法,继承了一个抽象父类,但没有完全实现父类包含的抽象方法,以及实现了一个接口,但没有完全实现接口包含的抽象方法三种情况)只能被定义成抽象类。
【抽象类的作用】:
抽象类不能创建实例(不能new),只能被继承,从语义角度,抽象类是从多个具体类抽象出来的父类,它具有更高层次的抽象,从多个具有相同特征的类中抽象出一个抽象类,以这个抽象类为模板,从而避免子类的随意设计。
抽象类体现的是这种模板模式的设计,抽象类作为多个子类的模板,子类在抽象类的基础上进行扩展,但是子类大致保留抽象类的行为。
【final修饰符】:
fina关键字用来修饰类,变量和方法。表示其是不可变的。
【final变量】:
当final修饰变量时,表示该变量一旦获取初始值之后,其值就是不可变的了。final既可以修饰成员变量,也可以修饰局部变量,形参。
【final修饰成员变量】
成员变量是随着类初始化或对象初始化而初始化的,当类初始化时,系统会为该类的类属性分配内存,并分配默认值。当创建对象时,系统会为该对象的实例属性分配内存,并分配默认值。
当final修饰成员变量时,如果没有在定义成员变量时指定初始值,也没有初始化块、构造器为成员变量指定初始值,那么成员变量的值将会一直是“0”,“\u0000”,"false"或"null",这些成员变量也就失去了意义。
所以定义final修饰的成员变量时,要么指定初始值,要么在初始化块,构造器中初始化成员变量,有了初始值之后,该成员变量便不能再修改重新赋值。
【final修饰局部变量】:
使用final修饰局部变量,如果定义时没有指定初始值,则可以在后面的代码中对该局部变量进行赋值,但是只可以赋值一次,不能重复赋值,如果final修饰的这个局部变量在定义时就已经赋值,则后面的代码就不能进行重复赋值。
【final修饰基本类型和引用类型的区别】:
当final修饰基本类型变量时,不能对基本类型变量重新赋值,因此,基本类型变量不能被修改。但是,对于引用类型变量,它保存的仅仅是一个引用,final只保证这个引用所引用的地址不会发生改变,即一直引用一个对象,这个对象是可以发送改变的。
【final类】:
使用final修饰的类,该类不能被继承,也就是不能有子类,有时为了程序的安全性,可以将一些重要的类声明为final类,例如Java提供的System类和String类都是final类。
【final方法】:
使用final修饰的方法是不可以被重写的,如果想要不允许子类重写父类的某个方法,前面就可以加上final进行修饰该方法。
本文详细介绍了抽象类的概念,包括抽象类的定义、抽象方法的使用规则以及抽象类的作用。同时,深入探讨了final修饰符的应用,涵盖final变量、final类、final方法的特点及其在程序设计中的作用。
5114

被折叠的 条评论
为什么被折叠?



