Java基础:接口和抽象类
来源:互联网 发布:软件开发全面质量管理 编辑:程序博客网 时间:2024/09/21 06:38
必须被继承的类——抽象类:
抽象类的定义:
Abstract class Classname1{Abstract void method1(); //抽象方法Abstract void method2(); String var1; //成员变量 Void method(){ //成员方法……}}
抽象类的继承:
TIPS:某一个类继承另一抽象类,它未必一定要实现该抽象类的所有抽象方法,它会拥有父类的所有成员变量和方法;
不能被继承的类——final类
注意:
- Final类不能被继承,没有子类;
- Final方法不能被子类方法覆盖,但可被继承;
- Final成员变量表示常量,只能被赋一次值。
- Final能且只能被初始化一次;
- Final成员必须在声明时或者构造方法中被初始化;
多重继承——接口类
接口的创建于实现注意:
- Interface关键字用来声明一个接口,它可以产生一个完全抽象的类:
- 接口的方法只能是抽象的和公开的,Java接口不能有构造器(构造方法),不能有任何方法体;
Public interface 接口名{Public 返回值类型 方法名 (参数列表);……}
- 接口的字段会被隐式的声明为static 和final。
Public interface 接口名{Public static int a=1;Public final int b=2; ……}
- 接口的字段只是被存储在该接口的静态存储区域中,而不属于该接口。
- 接口的方法可以被声明为public或者不声明,但结果会按照public类型处理。
- 实现一个接口时,被定义的方法需声明为public类型,否则为默认类型,编译报错。
- 如果没有实现接口中的所有方法,那么创建的依然只是一个借口。
- 扩展借口:extends;实现接口:implements。
TIPS:若某一个类同时实现了多个接口,那么该类必须实现这些接口的所有接口方法。
接口与抽象类的区别:
(1) 抽象类可以提供实现方法,接口不能:
Java抽象类可以提供某些方法的具体实现,然而接口不行。向一抽象类加一具体方法时,他的所有子类都得到了这个方法。向一接口类加一新方法时,必须让每一个类都实现这个方法才可以通过编译;
(2) 抽象类只能继承一个,而可以实现多个接口:
根据这种理念,衍生出Java最经典的设计模式:
声明的工作由Java接口承担,同时给出一个抽象类,且实现了这个接口,而其他同属于这个抽象类型的具体类可以选择实现这个Java接口,也可以选择继承这个抽象类,也就是说在层次结构上,Java接口在最上面,然后接跟着抽象类。实现代码如下:
//接口Publicinterface Classname1{Publicvoid func1(); //定义接口方法……} //抽象类Public abstractclass Classname2{Public voidfunc2(){ //定义实现方法……}……} //实现类Public classClassname3 extends Classname2 implements Classname1{Publicvoid func1(){ //定义实现接口 Func2(); }}
(3)抽象类里可以有构造方法,而接口内不能有构造方法。
(4)抽象类中可以有普通成员变量,而接口中不能有普通成员变量。
(5)抽象类中可以包含静态方法,接口内不能包含静态方法。
(6)抽象类中的抽象方法的访问类型可以是public ,protected和默认类型,但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。
(7)抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static类型,并且默认为public static类型。
(8)抽象方法可以有main方法,我们可以运行它,但接口没有main方法,因此我们不能运行它。
(9)抽象方法比接口速度要快,接口需要时间去寻找在类中实现的方法。
(10)如果你往抽象类中添加新的方法,你可以在当前抽象方法中给它提供默认的实现,或者在当前类中提供抽象方法并在子类中实现该方法。如果你往接口中添加方法,那么你必须在实现该接口的类中实现该方法。
如何选择接口和抽象类:
设计过程中,尽量不要使用一个具体类去继承另一个具体类,Java接口和抽象类就是为了实现具体类的实现和继承而服务的。使用Java接口和抽象类进行变量的类型声明、参数的类型声明、方法的返回类型声明、以及数据类型的转换等;而不要使用具体Java类进行这些操作。
- 如果要创建不带任何方法定义和成员变量的基类,选择接口而不是抽象类;
- 如果知道某各类是基类,那么第一选择是接口,只有在必须要有方法定义和成员变量的时候,才选择抽象类。
- Java语言基础:抽象类和接口
- java基础---->接口和抽象类
- Java基础:抽象类和接口
- java基础------抽象类和接口
- 《java基础》抽象类和接口
- Java基础---抽象类和接口
- Java基础:接口和抽象类
- Java基础(9):抽象类和接口
- java基础抽象类和接口区别
- java基础 抽象类和接口
- java基础之抽象类和接口
- java基础之抽象类和接口
- java基础之抽象类和接口
- java-基础-接口和抽象类
- JAVA基础--接口和抽象类
- Java基础--接口和抽象类
- java基础之抽象类和接口
- java基础之抽象类和接口
- 区间最小值
- c++在vs2010中操作Mysql的讲解
- Oracle spatial创建空间数据的字段详解
- 简述什么是值传递,什么是地址传递,两者区别是什么
- IBM Watson 问答流程简介
- Java基础:接口和抽象类
- Android开机流程跟踪
- PHPStorm下XDebug配置
- 工程目录
- JQuery中ajax,get方法在ashx,aspx,asmx中的使用
- OCIlib的几个函数的执行效率(附上pro*c的性能对比)
- 在Windows的CMD中如何设置支持UTF8编码?
- linux下Mysql5.6源码安装
- IOS开发中的几种设计模式介绍