比如 在一个项目中我们经常看到static,final,interface ,abstract class 类 ,方法在一起使用,各自的特点 范围 为什么要怎样用?
static如果 修饰属性,是在类加载时被创建并进行初始化,类加载的过程只进行一次,也就是类变量只会被创建一次。比如获取在线人数就可以用这个修饰。
static修饰方法(静态方法): 会使这个方法成为整个类所公有的方法,可以用" 类名.方法名 "访问,一般在工具类里面使用
final 修饰的方法:不能被子类的方法重写,但可以被继承;
final 修饰的变量不能改变值,可以用作于常亮
interface 定义一个接口,里面有方法声明, 其他类可以继承该接口,实现接口声明的方法
abstract : 如果一个方法没有具体实现,需要用abstract来修饰,称为抽象方法;一个类如果有抽象方法,需要用abstract修饰,称为抽象类
static 修饰静态资源,比如方法和属性
final 一般和static配合使用,表示常量
interface 接口,里面都是抽象的方法
abstract 抽象类或者抽象方法,抽象类里可以有具体实现的方法
各自都有在适合的场合使用,建议楼主理解基本概念,理解面向对象思想,理解java编程的设计原则和模式,自然就能在实际开发中灵活应用。不过说起来容易,还需楼主自己努力,加油!
返回博客列表
原 java中abstract,interface,final,static的总结,加深理解
余路 余路
发布时间: 2012/05/03 14:15 阅读: 654 收藏: 3 点赞: 0 评论: 0
一,抽象类:abstract
1,只要有一个或一个以上抽象方法的类,必须用abstract声明为抽象类;
2,抽象类中可以有具体的实现方法;
3,抽象类中可以没有抽象方法;
4,抽象类中的抽象方法必须被它的子类实现,如果子类没有实现,则该子类继续为抽象类
5,抽象类不能被实例化,但可以由抽象父类指向的子类实例来调用抽象父类中的具体实现方法;通常作为一种默认行为;
6,要使用抽象类中的方法,必须有一个子类继承于这个抽象类,并实现抽象类中的抽象方法,通过子类的实例去调用;
二,接口: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,对于方法,表示不可覆盖,并且可以通过类名直接访问。
简单的说吧,首先被static修饰的是静态成员,也可称为类成员,final修饰的成员变量不可修改,修饰的方法不能被重写,修饰的类不能被继承,一般将static和final连用,以此保证内存不用反复分配和释放。抽象类用来被继承,接口用来被实现,都是用来被设计的,抽象类是一个残缺不全的类,它不能有实例,但是它有构造方法(用于被子类继承所用),可以有静态代码块,成员变量与普通的类没有区别,可能含有抽象方法,有抽象方法的类一定是抽象类,抽象类可能没有抽象方法(大部分抽象类都是有抽象方法的,要不抽象类就没有意义了)。接口里没有构造方法,没有静态代码块,成员变量是public static final修饰的,方法都是抽象方法,接口主要用于被实现,个人认为最重要的作用在于接口的回调。纯手码,谢谢