Java-抽象类和接口
一,抽象类
1,定义抽象类
使用abstract关键字修饰的类,是普通类的超集,普通类有的,抽象类都有,抽象类不能实例化对象
abstract class A{ abstract void show(); abstract void show(int i); }
2,实现抽象方法
用abstract修饰的方法,抽象方法只有方法的名称,参数列表,返回值,没有方法体。抽象类必须有子类,子类必须覆写抽象类的所有方法(除非子类也是抽象类)
abstract class A{ abstract void show(); abstract void show(int i); } public class B extends A{ int x; abstract void show(){ System.out.println("x=" + x); } abstract void show(int i){ System.out.println("x=" + x); } }
3,abstract和final关键字区别
abstract关键字:
(1)修饰抽象类,其必须有子类
(2)修饰抽象方法,子类要重写抽象类抽象方法
final关键字:
(1)修饰属性,表示常量
(2)修饰类,表示类到此为止,不能有子类
(3)修饰方法,该方法不能重写
注:abstract和final关键字不能同时使用
二,接口
1,接口定义
接口是抽象类的一种变体,但和抽象类有一些差异。接口使用interface关键字定义,形式为
interface My{ double a = 3.7; void show(); }
接口中的所有方法都是抽象方法,abstract可以不写
(1)抽象类的方法不一定是抽象的,接口中方法都是抽象的
(2)接口中所有数据都是共有静态常量,具有public,final,static属性,一般不写
(3)接口所有方法都是抽象,接口的子类必须重写接口的抽象方法
2,接口实现
接口生成子类是implements关键字实现一个接口,被实现的接口可以有多个,之间用逗号隔开
interface My { double a = 3.7; void show(); } class Test implements My { public void show(){ //实现抽象方法 System.out.println("a=" + a); } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)