一篇文章带你了解Java中的抽象类和接口知识

开发 后端
首先定义了一个Fruit类,在这个类中定义了抽象方法info(),然后定义Cherry类继承Fruit类,实现抽象方法info(),可以实例化Cherry对象,并调用它的info()方法。

[[378302]]

 一、抽象类

1.什么是抽象类?

凡是使用abstract关键字修饰的类就是抽象类。

2.假设在定义Animal类,定义一个shout()方法表示动物发出的叫声,我们知道不同动物它们的发出的声音是不一样的,在shout()方法不能够准确的描述动物发出的叫声。当在定义一个类,通常会定义一些方法来描述这个类的行为特征,有些时候这些方法实现的方式我们不能确定。定义抽象方法使用abstract关键字修饰例如以下所示:

  1. abstract void shout();//定义抽象方法 

定义抽象类使用abstract关键字修饰例如以下所示:

  1. //定义抽象类的Animal 
  2. abstract class Animal{ 
  3. abstract void shout()//定义抽象方法 

3.抽象类特点:

① 有抽象方法的类只能被定义成抽象类,但抽象类可以没有抽象方法。

②抽象类是没有具体对象的概念类,也就是说抽象类不能实例化为对象。

③如果一个类中含有未实现的抽象方法,那么该类就要使用abstract声明为抽象类。

④抽象方法不可以有方法体。

4.如何实现抽象类的方法例子

  1. //定义Fruit类 
  2. abstract class Fruit{ 
  3.     //定义抽象方法info() 
  4.     abstract void info(); 
  5. //定义Cherry继承Fruit类 
  6. class Cherry extends Fruit{ 
  7.     //实现抽象方法info() 
  8.     void info(){ 
  9.         System.out.print("我是一个樱桃,重量为66g!"); 
  10.   } 
  11. public class p25 { 
  12.     public static void main(String[] args) { 
  13.         // TODO Auto-generated method stub 
  14.         Cherry c=new Cherry();//实例化Cherry对象 
  15.         c.info();//调用info()方法 
  16.   } 

结果是:

我是一个樱桃,重量为66g!

从上面代码中,首先定义了一个Fruit类,在这个类中定义了抽象方法info(),然后定义Cherry类继承Fruit类,实现抽象方法info(),可以实例化Cherry对象,并调用它的info()方法。

二、接口

1.接口里面所有的变量都是常量,所有的方法都是抽象方法。

2.在定义接口需要用interface关键字声明:例如:

  1. interface Fruit{ 
  2. int MAX_WEIGHT = 1000;  //全局常量 
  3. void printInfo();        //定义抽象方法 

从上面的例子中,我们可以看到定义抽象方法printInfo()并没有使用abstract关键字修饰,接口定义方法的时默认使用”public abstract”来修饰,表示抽象方法。当接口的变量是默认使用”public static final”来修饰,表示全局常量。

3.在接口中的所有方法都是抽象方法,不可以通过实例对象来调用接口中的方法,需要定义一个类,并且使用implements关键字实现接口所有的方法。

4.实现接口所有的方法例子

  1. //定义Printer接口 
  2. interface Printer{ 
  3.     int max_line=20;//定义全局常量 
  4.     void printRun();//定义抽象方法pirntRun() 
  5.     void printData();//定义抽象方法printData() 
  6. //Colorprinter类实现Printer接口 
  7. class Colorprinter implements Printer{ 
  8.     //实现printRun()方法 
  9.     public void printRun(){ 
  10.         System.out.println("彩色打印机正在启动"); 
  11.     //实现printData()方法 
  12.     public void printData(){ 
  13.         System.out.println("彩色打印机正在打印中"); 
  14.   } 
  15.  
  16. public class p26 { 
  17.     public static void main(String[] args) { 
  18.         // TODO Auto-generated method stub 
  19.         Colorprinter c=new Colorprinter();//创建Colorprinter类的实例对象 
  20.         c.printRun();//调用Colorprinter类的printRun()方法 
  21.         c.printData();//调用Colorprinter类的printData()方法 
  22.   } 

输出的结果是:

  1. 彩色打印机正在启动 
  2. 彩色打印机正在打印中 

从上面代码中,首先是定义Printer接口,定义全局常量、两个抽象方法分别是printRun()和printData(),然后定义Colorprinter类并使用implements关键字实现Printer接口,我们发现Colorprinter类实现Printer接口是可以被实例化的,这个就是类和接口的之间的关系。

三、总结

本文主要介绍了抽象类、接口。

抽象类是使用abstract关键字修饰的类,抽象方法就是使用abstract关键字修饰的方法。

接口里面所有的变量都是常量,所有的方法都是抽象方法。在定义接口需要用interface关键字声明。

抽象类和接口使用案例来帮助理解用法。希望大家通过本文的学习,对你有所帮助!

 

责任编辑:武晓燕 来源: Java进阶学习交流
相关推荐

2021-09-27 09:18:30

ListIterato接口方法

2021-06-30 21:21:01

抽象泄漏框架

2021-04-07 06:11:37

Css前端CSS定位知识

2022-01-15 10:02:03

Java Hashtable类 Java 基础

2021-03-21 07:36:43

Python迭代知识语言

2024-10-08 15:51:09

JavaScriptStorage 接口

2024-08-06 14:44:48

JavaScriptStorage 接口

2021-08-06 07:51:48

JavaScriptStorage接口

2021-06-29 10:00:02

JavaScriptStorage接口

2024-05-23 15:32:33

StorageJavaScript

2023-05-08 08:21:15

JavaNIO编程

2021-06-30 00:20:12

Hangfire.NET平台

2023-05-12 08:19:12

Netty程序框架

2021-08-12 14:19:14

Slice数组类型内存

2021-06-04 09:56:01

JavaScript 前端switch

2021-02-02 18:39:05

JavaScript

2020-11-10 10:48:10

JavaScript属性对象

2021-01-29 18:41:16

JavaScript函数语法

2021-03-09 14:04:01

JavaScriptCookie数据

2021-05-18 08:30:42

JavaScript 前端JavaScript时
点赞
收藏

51CTO技术栈公众号