黑马程序员----【javaSE基础】个人总结--abstract class和interface的区别
2013-06-29 12:45
471 查看
------- android培训、java培训、期待与您交流! ----------
相似处:
1.interface的方法全部都没有“实现部分”(body区);
而abstract类能拥有abstract方法,这些方法也都没有“实现部分”(body区);
2. interface和abstract类都不能直接用来建立对象实例,必须由一个标准的“一般类”去继承它(implements或extends),实现这些没有“实现部分”(body区)的方法,然后再以次“一般类”建立对象实例。
差异处:
1.interface没有构造函数;但abstract类有构造函数。
2.interface不允许其内任何方法拥有“实现部分”;但abstract类允许拥有一般非abstract的方法
,它们就一定有“实现部分“。
3.interface没有内置的super和this变量;abstract类则有。
4.interface的成员变量一定是常数(final的变量);但abstract类的成员变量,皆按照标准的一般类的成员变量。
5.interface所有成员的封装等级都是public,故定义成员时不可加public之外的其他封装修饰符;但abstract类的成员可以是任何封装等级,也就是它的成员可加任何封装修饰符。
------- android培训、java培训、期待与您交流! ----------
相似处:
1.interface的方法全部都没有“实现部分”(body区);
而abstract类能拥有abstract方法,这些方法也都没有“实现部分”(body区);
2. interface和abstract类都不能直接用来建立对象实例,必须由一个标准的“一般类”去继承它(implements或extends),实现这些没有“实现部分”(body区)的方法,然后再以次“一般类”建立对象实例。
差异处:
1.interface没有构造函数;但abstract类有构造函数。
2.interface不允许其内任何方法拥有“实现部分”;但abstract类允许拥有一般非abstract的方法
,它们就一定有“实现部分“。
3.interface没有内置的super和this变量;abstract类则有。
4.interface的成员变量一定是常数(final的变量);但abstract类的成员变量,皆按照标准的一般类的成员变量。
5.interface所有成员的封装等级都是public,故定义成员时不可加public之外的其他封装修饰符;但abstract类的成员可以是任何封装等级,也就是它的成员可加任何封装修饰符。
/* 创建一个抽象类Draw,在抽象类中定义一个名称为drawRect()的抽象方法,再创建此 抽象类的子类Exampl,练习抽象类的使用。 ps:在创建抽象类时,要使用abstract关键字来定义抽象类。 抽象类中定义抽象方法,同样需要使用abstract关键字来定义。 继承抽象类,必须重写抽象类中所有抽象方法。*/ abstract class Draw { //定义抽象类 public abstract void drawRect(double w,double h); } public class Exampl extends Draw{ //实现抽象类 public void drawRect(double w,double h){ System.out.println("矩形的宽和高分别是:"+w+"和"+h); } public static void main(String[] args){ Exampl ex=new Exampl(); ex.drawRect(100,50); //调用方法输出矩形的宽和高 } }
/* 创建一个接口,在该接口中定义一个计算面积的getArea()方法,然后创建一个引用实现接口的类,在方法getArea()中实现面积的计算。 定义接口需要使用关键字interface 接口中的方法都是抽象方法。不包含方法体。 要实现接口需要使用implements关键字。 实现接口必须重写接口中的所有方法。*/ interface Area { public double getArea(double r); } public class Exampla implements Area { // 创建引用接口的类 private double r = 0f; // 声明半径 private double getR() { return r; } private void setR(double r) { this.r = r; } public double getArea(double r) { // 实现接口中的方法 double area = Math.PI * r * r; return area; } public static void main(String[] args) { Exampla ex = new Exampla(); ex.setR(10.0); // 为半径赋值 System.out.println("半径是" + ex.getR() + "的圆的面积是:" + ex.getArea(ex.getR())); } }
/* 建立两个接口,每个接口中各定义一个方法,创建一个类,使该类引用这两个接口,练习多接口的引用。 ps: 类实现接口,必须使用关键字implements Java中不可以同时继承两个类,但是可以同时实现多个接口,要实现的接口之间使用逗号分隔。 */ interface Move{ //定义接口Move public void startMove(String move); } interface Speak{ //定义接口Speak public void startSpeak(String speak); } public class Examplc implements Move,Speak{ public void startMove(String move){ //实现接口Move中的方法 System.out.println(move); } public void startSpeak(String speak){ //实现接口Speak中的方法 System.out.println(speak); } public static void main(String[] args){ Examplc ex=new Examplc(); ex.startMove("开始移动了......"); ex.startSpeak("开始说话了......"); } }
------- android培训、java培训、期待与您交流! ----------
相关文章推荐
- 黑马程序员----【javaSE基础】个人整理--static总结
- 黑马程序员----【javaSE基础】个人总结--异常和包
- 黑马程序员----【javaSE基础】个人总结--String 、 StringBuffer 和 StringBuilder
- 黑马程序员----【javaSE基础】个人总结--常识复习
- 黑马程序员----【javaSE基础】个人总结--代码块
- 黑马程序员----【javaSE基础】个人总结--this和super
- 黑马程序员--02.Java语言基础--03.堆内存和栈内存的区别【个人总结】
- 黑马程序员----【javaSE基础】个人总结--eclipse常用快捷键
- 黑马程序员----【javaSE基础】个人总结--static
- 黑马程序员--Java基础加强--02.代码简化 书写规律I_原始数据类型【重载】【多态】【泛型】【泛型限定】【个人总结】
- 黑马程序员--Java基础加强--05.【泛型通配符】【个人总结】
- 黑马程序员_JavaSE基础知识总结十五:反射
- 黑马程序员--Java基础加强--04.代码简化 书写规律III_数组参数【重载】【数组】【可变参数数组】【泛型可变参数数组】【个人总结】
- 黑马程序员 一些个人总结的小基础知识点
- 黑马程序员--Java基础加强--13.利用反射操作泛型II【TypeVariable】【GenericArrayType】【WildcardType】【Type及其子接口的来历】【个人总结】
- 黑马程序员----【javaSE基础】总结整理--泛型
- 黑马程序员--javaSE--网络编程基础总结
- 黑马程序员_JavaSE基础知识总结四:递归与迭代
- 黑马程序员--javaSE--多线程基础总结
- 黑马程序员_JavaSe基础知识总结六:super、final关键字