抽象类和接口

抽象类和接口

开发工具与关键技术:工具:myeclipse  技术:abstract,Interface 
作者:吴东梅
撰写时间:2019-05-11

抽象类
在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。抽象类的作用有点类似“模板”,其目的是要设计者依据它的格式,来修改并创建新的子类。
抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法、初始化块和构造方法和普通类一样。
由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。
一、 抽象方法:只包含一个方法名,而没有方法体,使用abstract修饰。
在这里插入图片描述
修饰符:public、protected、private(三选一)。
二、 示例代码:定义一个抽象类
在这里插入图片描述
在这里插入图片描述
定义一个普通类继承抽象类,因为抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。而且必须实现抽象类的所有抽象方法。
在这里插入图片描述
再定义一个类名为Demo的类,用main方法运行代码,以下就是代码执行的结果图:
在这里插入图片描述
抽象类的总结:
1、抽象类必须使用abstract修饰符来修饰,抽象方法也必须使用abstract修饰符来修饰,抽象方法不能有方法体。
2、抽象类不能被实例化,无法使用new关键字来调用抽象类的构造器创建抽象类的实例。
3、抽象类可以包含成员变量、方法(普通方法和抽象方法都可以)、构造器、初始化块、内部类(接口、枚举)5种成分。
4、抽象类的构造器不能用于创建实例,主要是用于被其子类调用。
5、抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类。
6、abstract 和 static 不能同时修饰一个方法。
抽象类的特点:
1、 方法只有声明没有实现时,该方法就是抽象方法,需要被abstract修饰。
抽象方法必须定义在抽象类中。该类必须也被abstract修饰。
2、 抽象类不可以被实例化。为什么?因为调用抽象方法没有意义。
3、 抽象类必须由其子类覆盖了所有的抽象方法后,该子类才可以实例化。否则,这个子类还是抽象类。

关于抽象类的一些常识问题:
1、抽象类中有构造函数吗?
有。用于给子类对象进行初始化。
2、抽象类可以不定义抽象方法吗?
可以的。但是很少见,目的就是不让该类创建对象。AWT的适配器对象就是这种类。通常这个类中的方法有方法体,但是却没有内容。
3、抽象关键字不可以和哪些关键字共存?
private:因为抽象方法被子类继承之后,子类需要覆盖父类的所有的抽象方法,如果抽象方法 定义为私有的,则子类无法访问,就无法对该方法进行覆盖。
static:不行。
final:不行。因为abstract修饰的方法必须要被覆盖,而final修饰的方法不能被覆盖,所以这样就会造成冲突,编译出错。
4、抽象类和一般类的异同点。
相同点:抽象类和一般类都是用来描述事物的,都在内部定义了成员。
不同点:
1) 一般类有足够的信息描述事物。
抽象类描述事物的信息有可能不足。
2)一般类中不能定义抽象方法,只能定义非抽象方法。
抽象类中可以定义抽象方法,同时也可以定义非抽象方法。
3)一般类可以被实例化。
抽象类不可以被实例化。
5、抽象类一定是个父类吗?
是的。因为需要子类覆盖其所有的方法后才可以对子类实例化。

Java 接口
接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。
接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。
除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。
接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。
在 Java 中,接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象。
一、接口的定义
格式:
在这里插入图片描述
修饰符 public、abstract
接口有以下特性:
1、接口是隐式抽象的,当声明一个接口的时候,不必使用abstract关键字。
2、接口中每一个方法也是隐式抽象的,声明时同样不需要abstract关键字。
3、接口中的方法都是公有的。
4、编译时自动为接口里定义的方法添加public abstract修饰符。
5、Java接口里的成员变量只能是public static final共同修饰的,并且必须赋初值,可以不写public static final,编译的时候会自动添加。
示例代码如下:
在这里插入图片描述
二、接口的实现
当类实现接口的时候,类要实现接口中所有的方法。否则,类必须声明为抽象的类。
类使用implements关键字实现接口。在类声明中,Implements关键字放在class声明后面。 注意:Java中的类可以实现多个接口。
格式:
在这里插入图片描述
示例代码:InterFaceOne接口的实现类,一个类实现一个接口。
在这里插入图片描述
实现成功之后,再定义一个一般类,用其Main方法来执行在接口中定义的抽象方法,运行代码及运行效果如下图所示:
在这里插入图片描述
Java中的类也可以同时实现多个接口,如下所示:
1、首先定义一个一般类,实现多个接口,如下图所示:
在这里插入图片描述
在实现多个接口的时候,要注意,不管实现多少个接口,在接口里面定义的抽象方法都必须实现完才可以,否则该类还是抽象类,除非实现接口的类是抽象类。
2、再定义一个一般类,写运行实现接口的类的代码:如下图所示:
在这里插入图片描述
一个类多实现接口完成。
三、接口的继承 一个接口能继承另一个接口,和类之间的继承方式比较相似。接口的继承使用extends
关键字,子接口继承父接口的方法。接口允许多继承。
示例代码:
在这里插入图片描述
需要注意的是:
一个类可以同时实现多个接口。一个类在继承另一个类的同时,还可以实现多个接口。接口与接口之间是继承关系,而且一个接口可以同时继承多个接口。接口的出现避免了单继承的局限性。
如下所示,就是一个类在继承一个类的同时,还可以实现多个接口的操作:
1、 首先定义两个接口,如下图所示:
在这里插入图片描述
在这里插入图片描述
2、 定义一个抽象类,如下图所示:
在这里插入图片描述
3、 最后定义一个一般类,继承抽象类和实现接口,实现里面定义的方法,如下图所示:
在这里插入图片描述
4、 用一般类的main方法执行上面定义的所有的方法,如下图所示:
在这里插入图片描述
到此,就已经完成了一个类在继承另一个类的同时还可以同时实现多个接口的操作。
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值