一、抽象类
1.什么是抽象类?
凡是使用abstract关键字修饰的类就是抽象类。
2.假设在定义Animal类,定义一个shout()方法表示动物发出的叫声,我们知道不同动物它们的发出的声音是不一样的,在shout()方法不能够准确的描述动物发出的叫声。当在定义一个类,通常会定义一些方法来描述这个类的行为特征,有些时候这些方法实现的方式我们不能确定。定义抽象方法使用abstract关键字修饰例如以下所示:
- abstract void shout();//定义抽象方法
定义抽象类使用abstract关键字修饰例如以下所示:
- //定义抽象类的Animal
- abstract class Animal{
- abstract void shout()//定义抽象方法
- }
3.抽象类特点:
① 有抽象方法的类只能被定义成抽象类,但抽象类可以没有抽象方法。
②抽象类是没有具体对象的概念类,也就是说抽象类不能实例化为对象。
③如果一个类中含有未实现的抽象方法,那么该类就要使用abstract声明为抽象类。
④抽象方法不可以有方法体。
4.如何实现抽象类的方法例子
- //定义Fruit类
- abstract class Fruit{
- //定义抽象方法info()
- abstract void info();
- }
- //定义Cherry继承Fruit类
- class Cherry extends Fruit{
- //实现抽象方法info()
- void info(){
- System.out.print("我是一个樱桃,重量为66g!");
- }
- }
- public class p25 {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- Cherry c=new Cherry();//实例化Cherry对象
- c.info();//调用info()方法
- }
- }
结果是:
我是一个樱桃,重量为66g!
从上面代码中,首先定义了一个Fruit类,在这个类中定义了抽象方法info(),然后定义Cherry类继承Fruit类,实现抽象方法info(),可以实例化Cherry对象,并调用它的info()方法。
二、接口
1.接口里面所有的变量都是常量,所有的方法都是抽象方法。
2.在定义接口需要用interface关键字声明:例如:
- interface Fruit{
- int MAX_WEIGHT = 1000; //全局常量
- void printInfo(); //定义抽象方法
- }
从上面的例子中,我们可以看到定义抽象方法printInfo()并没有使用abstract关键字修饰,接口定义方法的时默认使用”public abstract”来修饰,表示抽象方法。当接口的变量是默认使用”public static final”来修饰,表示全局常量。
3.在接口中的所有方法都是抽象方法,不可以通过实例对象来调用接口中的方法,需要定义一个类,并且使用implements关键字实现接口所有的方法。
4.实现接口所有的方法例子
- //定义Printer接口
- interface Printer{
- int max_line=20;//定义全局常量
- void printRun();//定义抽象方法pirntRun()
- void printData();//定义抽象方法printData()
- }
- //Colorprinter类实现Printer接口
- class Colorprinter implements Printer{
- //实现printRun()方法
- public void printRun(){
- System.out.println("彩色打印机正在启动");
- }
- //实现printData()方法
- public void printData(){
- System.out.println("彩色打印机正在打印中");
- }
- }
- public class p26 {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- Colorprinter c=new Colorprinter();//创建Colorprinter类的实例对象
- c.printRun();//调用Colorprinter类的printRun()方法
- c.printData();//调用Colorprinter类的printData()方法
- }
- }
输出的结果是:
- 彩色打印机正在启动
- 彩色打印机正在打印中
从上面代码中,首先是定义Printer接口,定义全局常量、两个抽象方法分别是printRun()和printData(),然后定义Colorprinter类并使用implements关键字实现Printer接口,我们发现Colorprinter类实现Printer接口是可以被实例化的,这个就是类和接口的之间的关系。
三、总结
本文主要介绍了抽象类、接口。
抽象类是使用abstract关键字修饰的类,抽象方法就是使用abstract关键字修饰的方法。
接口里面所有的变量都是常量,所有的方法都是抽象方法。在定义接口需要用interface关键字声明。
抽象类和接口使用案例来帮助理解用法。希望大家通过本文的学习,对你有所帮助!
近几年,互联网行业蓬勃发展,在互联网浪潮的冲击下,互联网创业已成为一种比较...
TIOBE 公布了 2021 年 3 月的编程语言排行榜。 本月 TIOBE 指数没有什么有趣的变...
本文转载自公众号读芯术(ID:AI_Discovery)。 这一刻你正在应对什么挑战?这位前...
本文转载自微信公众号「bugstack虫洞栈」,作者小傅哥 。转载本文请联系bugstack...
基本介绍 给定 n 个权值作为 n 个叶子节点,构造一颗二叉树,若该树的带权路径长...
想了解更多内容,请访问: 51CTO和华为官方战略合作共建的鸿蒙技术社区 https://...
前言 统计科学家使用交互式的统计工具(比如R)来回答数据中的问题,获得全景的认...
在Python开发过程中,我们难免会遇到多重条件判断的情况的情况,此时除了用很多...
溢价 域名 的续费价格如何?通常来说,因为溢价域名的价值高于普通域名,所以溢...
背景 我们知道 如果在Kubernetes中支持GPU设备调度 需要做如下的工作 节点上安装...