Java面向对象程序设计:抽象类,接口用法实例分析

作者:随风行云 时间:2023-03-08 23:56:07 

本文实例讲述了Java面向对象程序设计:抽象类,接口用法。分享给大家供大家参考,具体如下:

本文内容:

  • 抽象类

  • 接口

  • 抽象类与接口的异同

 首发日期:2018-03-24


抽象类:

  • 虽然已经有了父类,但有时候父类也是无法直接描述某些共有属性的,比如哺乳类和人类都会叫,而一般来说哺乳类这个父类并没有准确定义“叫”的属性的,显然应该由子类来决定怎么“叫”,但“叫”这个属性是共有的,那么可以把这个属性抽象化(抽象则代表没有具体内容),由子类来实现具体内容。

  • 普通类中无法定义抽象方法,所以定义了抽象类。

  • 由于抽象方法子类是必须重写的,不然会运行失败,所以可以确保子类重写抽象方法。

  • 抽象类可以有抽象方法,也可以没有抽象方法(没有抽象方法的抽象类),没有抽象方法时,子类继承不需要覆盖方法。

  • 抽象类不可以实例化,不能用new关键字创建对象。

  • 只有子类覆盖所有的抽象方法后,子类具体化,子类就可以创建对象。如果没有覆盖所有的抽象方法,子类还是抽象类。

  • 抽象方法一定定义在抽象类中,都需要abstract来修饰。抽象方法只允许声明,不允许定义。故此不能有大括号。抽象方法也不允许用final修饰。

  • 抽象类的定义格式:Java面向对象程序设计:抽象类,接口用法实例分析

  • 抽象方法的定义格式:Java面向对象程序设计:抽象类,接口用法实例分析


abstract class A{
abstract void talk();//只能声明,不能具体定义
}

class B extends A{
void talk() {
 System.out.println("run in B");//子类必须重写抽象方法
}
}

public class Demo {

public static void main(String[] args) {
 B b=new B();
 b.talk();

}

}

接口:

  • 接口也是抽象的,抽象的原因与抽象类的原因类似。但用处不同,接口一般用于定义类的统一行为,而抽象类是“继承”。

  • 类重写一个接口中的所有抽象方法称为接口的实现。

  • 接口解决的问题:JAVA不直接支持多继承,但支持多实现。

  • 接口体中包含常量定义和方法声明,不允许对方法进行定义。

  • 接口可以说是完全抽象的抽象类。

  • 子类需要覆盖接口中的所有的抽象方法才能实例化,否则它是一个抽象类。

  • 如果一个类实现了一个接口,该类必须对接口中声明的方法进行定义。实现方法时方法的名字、返回类型、参数个数及参数类型必须与接口声明的一致。

  • 接口中,方法的修饰符默认是public abstract;接口中的常量的修饰符默认是public static final;所以子类中必须使用public来修饰定义的方法。

  • 接口的定义格式:Java面向对象程序设计:抽象类,接口用法实例分析

  • 接口的实现:Java面向对象程序设计:抽象类,接口用法实例分析


package 接口;

interface A{
public static final int size=100;
public abstract void talk();
// public abstract void eat();
}
class B implements A{
//实现A中的抽象方法
public void talk() {
 System.out.println("B talk");
}
}
public class Demo {

public static void main(String[] args) {
 new B().talk();

}

}

注意:

  1. 如果一个类声明实现了一个接口,但没有实现接口的所有方法,那么这个类必须是抽象类

  2. Java面向对象程序设计:抽象类,接口用法实例分析如果一个类没有完全实现接口中的所有方法,那么这个类必须是一个抽象类。


抽象类与接口的异同:

  • 相同:

    • 都是抽象的

    • 都不能被实例化

    • 都能包含抽象的方法,这些抽象的方法用于描述类具备的功能,但是不提供具体的实现。

  • 差异:

    • 接口是完全抽象

  • 概念设计区别:

    • 抽象类是可以有非抽象方法的,而接口是完全抽象的,其实可以这样理解他们的区别:A,B都是一个抽象类,但它们由于是“父类”,所以一般来说都是有一些具体属性的,可以说抽象类是一个父类的抽象化,但它离不开父类与子类的关系;但接口定义的是行为,它并没有强的父子类关系,它只是完全抽象的定义了一些行为作为标准,就像工厂里的元件的各种标准。

    • 而接口中的变量和方法的修饰符都显示出接口是一个“开放的固定的行为标准”

希望本文所述对大家java程序设计有所帮助。

来源:https://www.cnblogs.com/progor/p/8636061.html

标签:Java,面向对象,抽象类,接口
0
投稿

猜你喜欢

  • springboot实现注册加密与登录解密功能(demo)

    2021-12-15 15:10:08
  • java读取properties文件的方法

    2021-12-25 11:30:36
  • SpringMVC bean加载控制的实现分析

    2023-08-08 18:46:19
  • 使用Java8 Stream流的skip + limit实现批处理的方法

    2023-11-29 06:17:39
  • Android开发组件flutter的20个常用技巧示例总结

    2023-06-19 17:25:23
  • Mybatis一对多关联关系映射实现过程解析

    2021-07-13 06:22:59
  • Java实现微信发红包

    2021-07-22 05:11:07
  • Java 替换word文档文字并指定位置插入图片

    2023-08-12 22:02:25
  • 详解java设计模式中的门面模式

    2021-08-17 18:16:25
  • idea2020.3.3集成maven及遇到的坑(推荐)

    2021-11-18 04:18:54
  • Spring深入探索AOP切面编程

    2023-05-27 09:37:16
  • Spring一步到位精通拦截器

    2022-01-03 18:31:50
  • C#字符集编码的使用及说明

    2023-12-05 02:06:05
  • java + dom4j.jar提取xml文档内容

    2023-11-29 03:55:10
  • 短网址的原理与生成方法(Java实现)

    2022-04-14 11:29:19
  • 实例讲解Java的Spring框架中的控制反转和依赖注入

    2023-04-24 17:44:49
  • 带你了解Java Maven的打包操作

    2022-08-03 15:23:33
  • 通过Java实现反向代理集群服务的平滑分配

    2023-05-28 12:51:54
  • Java设计模式之访问者模式

    2023-04-17 20:00:15
  • 解决微服务feign调用添加token的问题

    2023-09-11 09:38:05
  • asp之家 软件编程 m.aspxhome.com