Java接口以及抽象类-理论

来源:互联网 发布:创业软件股份ceo 编辑:程序博客网 时间:2024/06/05 08:16
什么是抽象类?

在普通的类中,所有的方法都有方法体,其实在Java中可以定义没有方法体的方法,该方法由其子类来具体的实现没有方法体的方法,我们称之为抽象方法,含有抽象方法的类的称为抽象类。


注意:一个类一旦继承了抽象类,那么这个类要么实现抽象类中的抽象方法,要么继续抽象下去,等待其非抽象子类来实现,抽象类中不一定非要有抽象方法,但是含有抽象方法的一定是抽象类


抽象类格式:
修饰符   abstract   class  类名{
//其他的属性和方法与正常的类没有区别


//抽象方法
修饰符 acstract   返回值类型    方法名(参数列表);

}
抽象类中可以没有抽象方法



抽象方法的特点

1.只有方法头,没有方法体的方法成为抽象方法
2.抽象方法用abstract关键字来修饰
3.抽象方法代表一种不确定的操作或行为
4.抽象方法不能被调用


抽象类的特点

1.定义中含有抽象方法的类叫做抽象类
2.抽象类用abstract来修饰
3.抽象类代表一种抽象的对象类型
4.抽象类不能实例化,不能使用new关键字创建对象
5.抽象类中可以有具体方法,可以没有抽象方法


抽象类与具体的普通类的区别:

1.抽象类可以有抽象方法
2.抽象类不能实例化,只能是抽象类的子类来实例化
3.抽象类的子类(非抽象),必须实现父类抽象方法
4.抽象方法不用private关键字修饰



接口

什么是接口呢?

接口泛指实体把自己提供给外界的一种抽象化物(可以为另外一个实体),用以由内部操作分离出外部沟通方法,使其能被修改内部而不被影响外界其他实体与其交互的方式。


接口使用interface关键字来定义,不使用class关键字来定义。
修饰符   interface   名字{
//静态最终变量
//抽象方法

JDK1.8以后接口中可以有具体的方法,使用default来修饰

interface IDemo{    default  void  methodName(){         System.out.println("Hello World");    }}


接口的特点:

1.接口中只能有静态常量(static final)和抽象(abstract)方法
2.定义接口时,使用interface关键字替代class关键字定义接口
3.一个类可以使用implements去实现多个 接口,只能有一个继承
4.接口不能实现(implements)接口,只能通过extends继承接口
5.Java接口是对功能是拓展
6.当类实现了某个Java接口时,它必须实现接口中的所有抽象方法,否则这个类必须声明为抽象类
7.接口中没有构造方法,不能被实例化


接口成员的各自特点:

1.接口中的变量,默认都是使用static  final 修饰的静态常量
2.接口中的方法,如果没有修饰符,默认都是public修饰
3.jdk1.8以后,接口引入新概念,使用default修饰的方法可以有方法体


类与类之间有以下关系:
is-a    继承关系
has-a  组合关系

类与接口的关系:
like-a  实现接口关系(使用implements关键字)

接口与接口的关系:
接口之间使用extends继承


接口与抽象类之间的区别:

1.Java是单继承,一旦使用抽象类做为父类,就不能继承其他的类,但是接口可以多实现
2.抽象类的继承存在逻辑关系,接口可以不用存在这种关系,接口突出的是不同类型的事物有相同的特征
3.抽象类用于一组相关事物,表示is-a的关系
   接口用于一组不相关的事物,表示的是like-a的关系

原创粉丝点击