final abstract关键字

final关键字:-----最后的,最终的

   (1)可以修饰类,此类变为终结类,不能派生子类(不能有子类)。如System Math String。

   (2)可以修饰变量,此变量变为常量,值不能改变。

   (3)可以修饰方法,此方法不能被重写,允许在本类中被重载。

   (4)可以修饰对象,此对象的引用地址不能再改变,但是对象的值允许改变。


abstract 关键字:------抽象的,模糊的

   使用abstract修饰的类叫抽象类,抽象类允许有构造方法,数量可以是0或者多个,虽然有构造方法,但是不能直接创建对象。

使用abstract修饰的方法叫做抽象方法,抽象方法只能存在抽象类或者接口当中。

    抽象类中存在抽象方法的话,其子类必须是抽象类或者在子类中重写该抽象方法。如果再有其他的类继承此子类,则重写以上两个或者多个类的多个抽象方法。

    注意:

(1)抽象类可以含有0个或多个抽象方法。

(2)抽象类允许有构造方法,但是不允许直接创建对象,需借助子类。对象的向上转型,为父类实例化对象。

(3)一个类中存在抽象方法,则这个类必为抽象类。

(4)子类如果是抽象类,则不是必须重写抽象方法。

(5)abstract方法不能有方法体。

题外话:成员变量只有在创建对象时,才会为其分配空间,如果还没创建对象就进行运算,会出现编译错误。

接口:

(1)在接口中只能定义抽象方法,在JDK1.8之后允许定义静态方法。

(2)接口定义抽象方法,可以省略abstract关键字。如:public void aMethod();  

(3)接口定义的成员属性,只能是全局静态常量 。如 :final static int a;

(4)接口定义的抽象方法,不允许使用private,final修饰。原因:子类不能重写使用private和final修饰的方法。

(5)接口定义的抽象方法和静态常量,权限修饰符是public,即使不写,默认的也是public。

(6)接口也不允许直接使用new创建对象,需要借助子类完成。

(7)接口只能是被实现或者不能被实现,接口允许被多个类实现。

接口的定义格式:

interface:接口名称{

                全局常量;

                抽象方法;

                }

注意:抽象类和接口都可以实例化,也就是创建对象,必须借助子类来完成。抽象类是可以有构造函数的,子类可以调用父类的构造函数。

抽象类和接口的区别:

(1)抽象类中可以有构造函数,接口中不能有构造方法。

(2)抽象类中可以有普通成员变量,接口中没有普通成员变量。

(3)抽象类中可以包含非抽象的普通方法,接口中的所有方法必须是抽象的,不能有非抽象的普通方法。

(4)抽象类中的抽象方法的访问类型可以是public,protected,(默认类型在eclipse中不报错,但应该不行),在接口中的抽象方法只能是public类型,默认也是public abstract类型。

(5)抽象类中可以包含静态方法,接口在JDK1.8版本后可以包含静态方法。


猜你喜欢

转载自blog.csdn.net/qq_15273599/article/details/80009881