首页 > 其他分享 >抽象类和接口

抽象类和接口

时间:2024-11-25 23:33:03浏览次数:9  
标签:color abstract 接口 抽象类 方法 public

1、抽象类

定义:

在面向对象的概述中,所有的对象都是通过类来描述的,但是反过来,并不是所有类都是描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。

特点

1、抽象类中可以存在抽象方法,抽象方法被abstract修饰,该方法可以没有具体实现(但反过来,当一个类中存在抽象方法时,该类必须是抽象类)。

2、抽象类可以和普通类一样存在成员变量和成员方法。

3、抽象类不能被实例化,但是可以被继承。

4、当一个普通类继承抽象类之后,这个普通类必须要重写这个抽象类中所有的抽象方法。

语法:

abstract修饰。

代码:

    //抽象类
abstract class Shape{
    String color;               //成员变量
    public void shape(){        //成员方法
        
    }    
    //抽象方法
    public abstract double calS();
    public abstract double calC();
    //构造方法
    public Shape(String color) {
        this.color = color;
    }
}
class Ract extends Shape{
    //长和宽
    private int a;
    private int b;
    //重写构造方法
    public Ract(String color , int a,int b) {
        super(color);
        this.a = a;
        this.b = b;
    }
    
    
    //子类继承抽象类,必须重写里面所有的构造方法,且重写方法的访问修饰限定符必须要大于等于抽象类中的
    @Override
    //长方形的面积
    public double calS() {
        return this.a * this.b;
    }

    @Override
    //长方形的周长
    public double calC() {
        return 2*(this.a + this.b);
    }
}

注意事项:1、static、final、private和abstract不能共存,即被abstract不能被static、final、private修饰(原因:这三个关键字修饰的方法都不能被重写,而abstract修饰的方法必须被重写)。

2、当一个普通类B继承抽象类A后不想重写其中的抽象方法,此时可以把B也设置为抽象类,那么当一个普通类C继承抽象类B后,必须要重写B和A中所有的抽象方法(可以理解为:欠的债,总是要还的)。

2、 接口

定义:

接口是多个类的公共规范,是一种引用数据类型。(类实现接口可以看作类具有xxx特性)。

特点:

1、接口中的成员变量默认为public static final的(常量),接口中的成员方法默认是public abstract的(抽象方法)。(在阿里巴巴开发手册中写道:在接口中的成员变量和成员方法无需修饰,这样能够使代码更加简洁)。

2、接口中不可以有普通的方法,但是Java8后开始允许在接口中定义default方法,这种方法可以有具体实现。

3、接口中的方法如果被static修饰,那么也可以有具体实现。

4、接口不能通过new实例化。

5、通过关键字implements来实现接口。

6、接口也可以实现向上转型和动态绑定。

语法:

通过interface定义,通过implements实现。

代码:

//接口1
public interface ISleeping {
    int sleephour = 7;      //常量            默认public static final修饰
    void sleep();           //抽象方法         默认public abstract
}
//接口2
public interface ISwimming {
    //抽象方法
    void swim();
}
//实现接口1和接口2的鱼类
public class Fish implements ISwimming,ISleeping {
    String name;
    String color;
    //构造方法
    public Fish(String name, String color) {
        this.name = name;
        this.color = color;
    }
    //重写swim方法
    @Override
    public void swim() {
        System.out.println("小鱼" + this.name + "在游泳");
    }
    //重写sleep()方法
    @Override
    public void sleep() {
        System.out.println("小鱼" + this.name + "在睡觉" + "睡眠时长" + sleephour);
    }
    public static void test1(ISwimming iSwimming){//只要实现了这个接口就可以向上转型
        iSwimming.swim();
    }
    public static void test2(ISleeping iSleeping){
        iSleeping.sleep();
    }

    public static void main(String[] args) {
        Fish fish = new Fish("小小","红色");
        test1(fish);
        test2(fish);
    }
}

注意事项:1、当一个类实现接口中的方法之后,当前类中的方法必须加上public。

2、接口中不能由构造方法和代码块。

3、一个接口会产生独立的字节码文件。

4、如果一个类实现了接口,而不想实现接口中的内容,则该类必须为抽象类

标签:color,abstract,接口,抽象类,方法,public
From: https://blog.csdn.net/CxK6666667/article/details/144036866

相关文章

  • Java成员特点与接口的各种关系 牛顿迭代法计算平方根
    1.(1)importjava.util.Scanner;publicclasstest{publicstaticvoidmain(String[]args){irrl=newirr();l.method();Scannersc=newScanner(System.in);sc.next();}}(2)publicinterfaceinter{//默认在int前加......
  • 接口_演练
    参考:接口-java教程-廖雪峰的官方网站接口引入publicabstractclassPerson{privateStringname;//String是基本类型吗?如果不是,那是什么类型privateintage;publicPerson(Stringname,intage){this.name=name;this.age=age;......
  • 接口练习_动物王国
    问题描述请创建一个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调用,接口幂......