IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 【Java】抽象类与接口 -> 正文阅读

[Java知识库]【Java】抽象类与接口

抽象类与接口

抽象类

一 概念
1 用关键字abstract修饰的方法称为abstract方法(抽象方法)

2 对于abstract方法,只允许声明,不允许实现,也就是只定义相应的方法头,而没有体内容
例如:abstract double getArea( );

3 抽象方法不允许使用static、final、private修饰

4 抽象类里面可以有抽象方法,也可以没有没有抽象方法但含有抽象方法的类一定是抽象类

5 对于抽象类,不能直接实例化对象,即不能使用new运算符创建该类的对象,只能先创建其子类,由子类创建对象

6 抽象类可以声明对象,作为子类对象的 上转型对象

二 流程

1 在设计一个程序时,可以先声明一个abstract类,通过在类中声明若干个abstract方法,表明这些方法在整个系统设计中的重要性,方法体的内容细节由它的非abstract子类去完成。
2 然后利用多态实现编程。使用多态进行程序设计的核心技术是使用方法重写和上转型对象,即将abstract类声明对象作为其子类的上转型对象,那么这个上转型对象就可以调用子类重写的方法。
3 所谓面向抽象编程,是指当设计某种重要的类时,不让该类面向具体的类,而是面向抽象类,即所设计类中的重要数据是抽象类声明的对象,而不是具体类声明的对象。

三 例子:
在这里插入图片描述
2 用中国移动和联通去继承抽象类卡SIM
在这里插入图片描述

接口

定义
接口的定义:Java使用关键字interface来定义一个接口。接口的定义和类的定义相似,分为接口的声明和接口体。
接口的声明格式:interface 接口的名字

接口体中包含常量定义和抽象方法定义两部分
定义接口的一般格式如下:

接口的继承接口用extends

[public] interface 接口名 [extends 父接口名]    
{
    [public] [static] [final] 数据类型 常量名=常量值;    	     //常量声明
    [public] [abstract] 返回类型 方法名(参数列表);        //抽象方法声明
}

特点
1 接口可以抽象出重要的行为标准,该行为标准用抽象方法来表示。
Java8以前接口中只有常量和抽象方法
2 接口中的变量自动都是public、static,final,可以省略
3 接口中的方法自动为public abstract,可以省略;
4 接口编译后也产生class文件。


5 接口中没有构造方法。 也就不能通过new构建接口的对象,只能像抽象类一样标示数据类型

6 接口也具有继承性,可以继承父接口的所有属性和方法。接口可以通过继承产生新的接口
7 如果实现接口的类不是抽象类,那么这个类必须实现该接口的所有方法。

一个类通过使用关键字implements声明自己实现一个或多个接口。

如:class A implements Printable,Addable{
       //…….
       } 

在这里插入图片描述

抽象类和接口不同处:

1 抽象类和接口组成不同,抽象类可以有变量、常量、构造方法、普通方法和抽象方法;接口只能有常量和抽象方法(8以后不是)。
2 抽象类和接口都可以有抽象方法。抽象方法把“做什么” 和“怎么做” 分离,虽然代码量增加,但增强了程序的可维护性
3 抽象类和接口的使用方式不同,抽象类通过子类继承,接口通过子类实现
4 抽象类和接口都可以通过“上转型对象”产生实例对象
5抽象类和接口在使用时,抽象类更像 一个模板,接口一般作为标准或表示一种能力
6 多使用面向接口编程或面向抽象编程

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-04-06 16:04:04  更:2022-04-06 16:06:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 7:49:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码