java接口与抽象类
2019-04-26 08:19:52来源:博客园 阅读 ()
本片随笔讲讲java中接口与抽象类。
一,接口
1、什么是接口?
那在日常生活中接口是什么呢?就是两个对象之间进行连接的部分就是接口,就比如热水器与水管的接口一样,他可以确保不同的东西之间的顺利连接,就如不同的热水器厂家和水管厂家只要按照接口的标准来进行生产。那么热水器和水管就可以顺利连接了。而在java领域中接口是抽象类的一种,只包含常量和方法是定义,而没有变量和方法的实现,且其方法都是抽象方法。
1.1、具体表现:1、通过接口实现列的相同行为,不用考虑类之间的关系。
2、通过接口指明需要实现的方法。
2、接口的语法声明:
Xxx.java文件
package pkg2; //定义类的接口,public后面加interface public interface Xxx{ //方法 抽象方法必须是没有方法体,而不是方法体内没有代码。如下 public int a(); }
Xxxlmpl.java文件
1 package pkg2; 2 3 //Xxxlmpl.java文件名 连接 Xxx.java文件名 4 public class Xxxlmpl implements Xxx{ 5 6 }
3.接口用法:用一道题目来讲解接口的用法,计算圆的周长,面积和体积。
第一步:我们先来写一个接口类的文件:Circle.java文件。
1 package pkg8; 2 3 public interface Circle{ 4 5 //定义一个方法 类型用float 类接口不需要方法体 所以直接用分号。 6 //周长 7 public float getCircumference(); 8 //面积 9 public float getArea(); 10 //体积 11 public float getVolumeCube(); 12 }
再写一个接口的实现类:Circlelmpl.java文件。
1 package pkg8; 2 3 public class CircleImp2 implements Circle2{ 4 //定义用于表示圆周率的常量PI 5 private static final float PI = 3.14f; 6 7 //定义用于表示圆的半径 8 private float radius; 9 10 //构造方法用于传递参数。 11 public CircleImp2(float radius){ 12 this.radius = radius; 13 } 14 15 //把接口类的需要求的周长,面积,体积实现 如果下: 16 //周长 17 public float getCircumference(){ 18 //实现的代码 19 return 2 * PI * radius; 20 } 21 //面积 22 public float getArea(){ 23 //实现的代码 24 return PI * radius * radius; 25 } 26 //体积 27 public float getVolumeCube(){ 28 //实现的代码 29 return 4/3 * radius * radius * radius; 30 } 31 }
提示:implements 接口列表:可选参数,用于指定该类实现的是哪些接口。当使用implements关键字时,接口列表为必选参数。当接口列表中存在多个接口名时,各个接口名之间使用逗号分隔。
最后来一个测试类:Test.java文件
package pkg8; public class Test2{ public static void main(String args[]){ //写了构造方法,所以直接把值传过来即可。 //求半径为8.3的圆的周长,面积,体积。 Circle2 circle = new CircleImp2(8.3f); System.out.println("周长是:"+circle.getCircumference()+" cm"); System.out.println("面积是:"+circle.getArea()+ " cm^2"); System.out.println("体积是:"+circle.getVolumeCube()+ " cm^3"); } }
运行结果:
4、final关键字
上面代码中 出现了一个final关键字,那final关键字有上面作用呢
final关键字的作用代表的是不可变的,最终的意思,他可以修饰类,类的成员变量和成员方法。但是final作用不同
1、fina修饰成员变量:则成为常量 如:final double count;
2、final修饰成员方法:则该方法吧被子类重写。
3、final修饰类,则类是不能被继承的 如:
public final class Name{ ..... }
总结:
final关键字的用法共有四种:
- 用来修饰数据,包括成员变量和局部变量,该变量只能被赋值一次且它的值无法被改变。对于成员变量来讲,我们必须在声明时或者构造方法中对它赋值。
- 用来修饰方法参数,表示在变量的生存期中它的值不能被改变;
- 修饰方法,表示该方法无法被重写;
- 修饰类,表示该类无法被继承。
二、抽象类
抽象类的特点:
1、最大的特点就是模糊的。为什么说是模糊的呢?因为抽象类是不具体的,现实不存在的东西。
2、抽象方法 必须要有抽象类 (但抽象类中可以没有抽象方法) 否则程序会报错。例如:
package pkg9; public class 周末{ public void 逛街(){ } public void 看电影(){ } //抽象类 public abstract void 结婚(); }
这里定义了一个周末的类 在里面有一个3个方法其中一个是抽象方法。
运行结果:
定义一个抽象类:
3、继承了抽象类,必须实现抽象类的所有抽象方法。
4、抽象类也可以继承抽象类,这样不需要实现父抽象类的方法。
接口和抽象类有什么区别?
1、接口中的所有方法都不需要实现(不允许有任何代码)。抽象类有些方法实现,有些方法没有实现。
2、接口里只能包含抽象方法,静态方法和默认方法,不能为普通方法提供方法实现,抽象类则可以包含普通方法。
相关链接:https://juejin.im/post/57ce3612816dfa0054189a13
原文链接:https://www.cnblogs.com/xym15079750872/p/10770477.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:PoolEntry 参数讲解
下一篇:简述Java中的final关键字
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- Spring系列.ApplicationContext接口 2020-06-11
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash