总结下java中abstract,interface,final,static,加深理解

来源:互联网 发布:java实现报表 编辑:程序博客网 时间:2024/06/08 00:04

一,抽象类:abstract 

    1,只要有一个或一个以上抽象方法的类,必须用abstract声明为抽象类; 
  理解:抽象类必须至少有一个抽象方法


    2,抽象类中可以有具体的实现方法; 
  理解:抽象类中可以有不带abstract的普通方法


    3,抽象类中可以没有抽象方法; 
      理解:抽象类中可以没有一个带abstract 的方法


    4,抽象类中的抽象方法必须被它的子类实现,如果子类没有实现,则该子类继续为抽象类 
  理解:一个子类,继承了一个为父类的抽象类,那么子类必须实现父类中的抽象方法,否则,这个子类也必须是抽象类。


    5,抽象类不能被实例化,但可以由抽象父类指向的子类实例来调用抽象父类中的具体实现方法;通常作为一种默认行为;

  理解:抽象类不能被实例化,如果要调用父类中不是抽象的方法,可以用父类引用指向子类对象来调用,比如:

       Father fa = new Child();  其中Father类是抽象类。 fa就可以调用父类中的非抽象方法。

    6,要使用抽象类中的方法,必须有一个子类继承于这个抽象类,并实现抽象类中的抽象方法,通过子类的实例去调用; 
  理解:如果要调用父类中的抽象方法,也可以用父类引用指向子类对象来调用,但,调用的是子类中已经实现父类     的抽象方法比如:

       Father fa = new Child();  其中Father类是抽象类。 fa就可以调用子类中实现的抽象方法。


二,接口:interface 

    1,接口中可以有成员变量,且接口中的成员变量必须定义初始化; 

    2,接口中的成员方法只能是方法原型,不能有方法主体; 

    3,接口的成员变量和成员方法只能public(或缺省不写),效果一样,都是public 

    4,实现接口的类必须全部实现接口中的方法(父类的实现也算,一般有通过基类实现接口中个异性不大的方法来做为适配器的做法) 



三,关键字:final 

   1,可用于修饰:成员变量,非抽象类(不能与abstract同时出现),非抽象的成员方法,以及方法参数 

   2,final方法:不能被子类的方法重写,但可以被继承; 

   3,final类:表示该类不能被继承,没有子类;final类中的方法也无法被继承. 

   4,final变量:表示常量,只能赋值一次,赋值后不能被修改.final变量必须定义初始化; 

   5,final不能用于修饰构造方法; 

   6,final参数:只能使用该参数,不能修改该参数的值; 



四,关键字:static 

   1,可以修饰成员变量和成员方法,但不能修饰类以及构造方法; 

   2,被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享 

   3,static变量和static方法一般是通过类名直接访问,但也可以通过类的实例来访问(不推荐这种访问方式) 

   4,static变量和static方法同样适应java访问修饰符.用public修饰的static变量和static方法,在任何地方都可以通过类名直接来访问,但用private修饰的static变量和static方法,只能在声明的本类方法及静态块中访问,但不能用this访问,因为this属于非静态变量. 




五,static和final同时使用 

   1,static final用来修饰成员变量和成员方法,可简单理解为“全局常量”! 

   2,对于变量,表示一旦给值就不可修改,并且通过类名可以访问。 

 3,对于方法,表示不可覆盖,并且可以通过类名直接访问。