首页 > 其他分享 >接口_演练

接口_演练

时间:2024-11-25 21:56:40浏览次数:11  
标签:abstract 接口 演练 public 抽象类 方法 void

参考:接口-java教程-廖雪峰的官方网站

接口引入

public abstract class Person {
    private String name; // String是基本类型吗?如果不是,那是什么类型
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public abstract void eat(); // 抽象方法的访问权限只能是public吗?

    public abstract void sleep();

    @Override
    public String toString() {
        return "姓名:" + name + ", 年龄:" + age;
    }
}

用interface关键字声明接口

如果一个抽象类没有(实例)字段;

所有方法都是抽象方法

public abstract class Person {
    public abstract void eat(); // 抽象方法的访问权限只能是public吗?

    public abstract void sleep();
}

就可以把该抽象类改写为接口,接口可以理解为一种特殊的抽象类

在Java中用interface关键字来声明接口。

public interface Person {
    public abstract void eat(); 

    public abstract void sleep();
}

因为接口定义的所有方法默认都是public abstract的,所以这两个修饰符不需要写出来(写不写效果都一样)

public interface Person {
    void eat(); 

    void sleep();
}

implements关键字

一旦某个普通类继承了抽象类,就意味着必须要实现它定义的抽象方法

在接口的语境下,不再叫作继承,而叫做实现

一旦某个普通类实现了一个接口,即意味着它必须定义接口中的所有方法。我们把这个类叫作接口实现类。

要声明一个类实现某个接口,需要使用关键字implements(不再是extends!!!)

public class Student implements Person {

    // 实现一个接口, 必须对接口中的所有方法提供定义,否则编译不通过!!!
}

简单说,就是需要实现接口中的所有方法(即:需对照着接口中的方法列表,在接口实现类中定义相应的方法!) 

public class Student implements Person {

    public void eat() {

    }

    public void sleep() {
        // 需要把隐藏的public写出来
    }
}

最终效果也是和抽象类一致的,也是定义了一种规范,凡是实现了xx接口就必须定义xx方法。例如上面Student类实现了Person接口就必须定义eat和sleep方法。

小结

接口可理解为一种特殊的抽象类

interface关键字声明接口,用implements关键字实现接口

与抽象类类似,不能实例化,只能被继承实现,强迫实现类定义接口中的所有(抽象)方法,否则编译报错

实际也是定义了某种规范,凡是实现了xx接口就必须定义xx方法。

接口与抽象类

既然接口与抽象类如此相似,为什么Java语言的设计者还要大费周折地引入接口呢?

这是因为使用抽象类存在一个严重的问题,在Java中每个类只能继承一个类,也就是extends后面只能由一个类

但每个类却可以实现多个接口。

例如一个人往往有多重身份或者功能,例如一个人可以既是一个工人、也是一个爸爸。这样原有的继承机制就无法表达。

那为什么不干脆提供多重继承的机制?

这是因为Java语言设计者认为多重继承会让语言变得非常复杂,或者效率降低。

实际上,接口可以提供多重继承的大多数好处,还能避免多重继承的复杂性和低效性。

接口特性(试一试)

★不能创建接口对象,但可以声明接口变量

★接口变量只能引用实现了该接口的类的对象

与类的结构层次一样,也可以扩展接口

接口中不能有实例字段,但可以包含常量(可通过接口名访问)

★每个类只能有一个超类,但可以实现多个接口

练习

练习1

1定义一个接口Moveable(可移动的),在接口中实现一个抽象方法:

void move();

2创建多个类实现接口:

  • Car类在move()方法中,打印输出“汽车在公路上行驶”
  • Ship类在move()方法中,打印输出“轮船在水面上航行”
  • Aircraft类在move()方法中,打印输出“飞机在天空中飞行”

3编写主类,在main方法中:

创建3个Moveable类型的接口变量,分别引用Car、Ship、Aircraft类的对象。调用每个对象的move() 方法,观察输出结果

练习2(★★★★★)

接口练习_动物王国

标签:abstract,接口,演练,public,抽象类,方法,void
From: https://www.cnblogs.com/xkxf/p/18568559

相关文章

  • 接口练习_动物王国
    问题描述请创建一个Animal动物类,要求有方法eat()方法,方法输出一条语句“吃东西”。创建一个接口AnimalInfo,接口里有一个抽象方法fly()。创建一个Bird类继承Animal类并实现接口AnimalInfo里的方法输出一条有语句“鸟儿飞翔”,重写父类的eat()方法输出一条语句“鸟儿吃虫”。创建T......
  • 第4天:基础入门-Web应用&蜜罐系统&堡垒机运维&API内外接口&第三方拓展结构&部署影响
    #知识点:1、基础入门-Web应用-蜜罐系统2、基础入门-Web应用-堡垒机运维3、基础入门-Web应用-内外API接口4、基础入门-Web应用-第三方拓展架构一、蜜罐:https://hfish.net/测试系统:Ubuntu20.04一键安装:bash<(curl-sS-Lhttps://hfish.net/webinstall.sh)1、有......
  • 【Azure 环境】从Azure AD(Entra ID)中获取的Token在访问自定义的接口应用时验证不通
    问题描述集成AzureAD(新名称MicrosoftEntraID),拿到对应的accessToken作为登录用的凭证。这个 AccessToken 能够正常返回,并作为Microsoft Graph userinfoAPI的Authorization,因为应用中会对前端传递过来的 AccessToken进行校验合法性。但目前遇见的问题时这个 Token 签......
  • 用python、JAVA等多种语言的实例代码演示教你如何免费获取股票数据(实时数据、历史数据
    ​近一两年来,股票量化分析逐渐受到广泛关注。而作为这一领域的初学者,首先需要面对的挑战就是如何获取全面且准确的股票数据。因为无论是实时交易数据、历史交易记录、财务数据还是基本面信息,这些数据都是我们进行量化分析时不可或缺的宝贵资源。我们的核心任务是从这些数据......
  • 接口实现任意格式图像的传参接收
    基于FastAPI的图像接收接口设计与实现概述在现代Web应用中,图像处理是一个常见的需求。无论是图像识别、图像分类还是图像编辑,都需要一个高效且灵活的接口来处理不同来源的图像数据。本文将详细介绍如何设计一个基于FastAPI的接口,使其能够接受任意类型的图像对象,并进行相应......
  • 前端修改代理、通过node mock后端接口
    在前端开发中,有时候会需要mock接口,虽然有的工具提供了云端mock的功能,但是定制化比较低,所以我用node写了一个mock小工具,主要使用了express、mockjs、cors,"cors":"^2.8.5","express":"^4.19.2","mockjs":"^1.1.0"使用两个文件即可完成这个小功能首先搭建一个简单的......
  • 【面向对象的程序设计——接口与多态】类型转换,方法的查找,多态(一)
    文章目录类型转换类型转换的规则转型或向上转型隐式转换显示类型转换方法的查找实例方法的查找类方法查找多态(一)多态的概念多态的作用/目的绑定绑定的概念绑定的分类静态绑定动态绑定类型转换类型转换的规则基本类型之间的转换:就是将值从一种类型转变为另一种......
  • 第55篇 如何保证接口的幂等性问题
    1.接口幂等性定义接口幂等性这一概念源于数学,原意是指一个操作如果连续执行多次所产生的结果与仅执行一次的效果相同,那么我们就称这个操作是幂等的。在互联网领域,特别是在Web服务、API设计和分布式系统中,接口幂等性具有非常重要的意义。具体到HTTP接口或者服务间的API调用,接口幂......
  • 【web】Gin+Go-Micro +Vue+Nodejs+jQuery+ElmentUI 用户模块之vue登录开发以及接口联
    在现代Web应用中,实现用户登录模块是一个关键功能。本文将分为初级、中级、高级阶段,详细说明如何使用Vue、ElementUI进行登录开发,并与Gin、Go-Micro、Node.js进行接口联调。初级用法介绍在初级阶段,主要关注于使用Vue和ElementUI创建一个简单的登录界面,并通过Node.js后端进......
  • D78【 python 接口自动化学习】- python基础之HTTP
    day78pycharm创建项目并进行接口请求学习日期:20241124学习目标:http定义及实战--pycharm创建项目并进行接口请求学习笔记:安装requests安装方式:pip/pip3installrequests官网教程:Requests:HTTPforHumans™—Requests2.32.3documentation安装方式方法一:终端安......