6.6---每天一点点--- Java基础之抽象类和接口的区别并举例说明(总复习+深入版)---详细+举例(小白也能看懂)

什么是抽象类?

抽象类是一种不能被实例化的类,它只能作为其他类的父类来使用。抽象类可以包含抽象方法和非抽象方法两种类型的方法,其中抽象方法必须在子类中被重写才能使用。当我们需要定义一个基础框架或者模板时,可以使用抽象类来定义一些通用行为并留出一些可变部分供子类实现

举个例子:假设你正在编写一个动物园管理系统,你可以定义一个Animal抽象类,并在其中定义一些通用行为(例如eat()方法),然后在Dog、Cat等子类中重写这些方法以适应不同类型的动物

public abstract class Animal {
    public void eat() {
        System.out.println("Animal is eating");
    }

    public abstract void move();
}

public class Dog extends Animal {
    @Override
    public void move() {
        System.out.println("Dog is moving");
    }
}

在上面的例子中,我们定义了一个Animal抽象类,并在其中定义了一个eat()非抽象方法和一个move()抽象方法。然后,在Dog子类中重写了move()方法并将其行为方式改变为输出“Dog is moving”

什么是接口?

接口是一种与具体实现无关的协议规范,它只包含常量、方法签名和默认方法等元素。接口可以被多个不相关的类同时实现,并且支持多继承。当我们需要定义一组公共行为或者约束时,可以使用接口来规范各个实现类之间的交互方式。

举个例子:假设你正在编写一个图形计算器程序,你可以定义一个Shape接口,并在其中声明了两个常量和两个抽象方法(例如getArea()和getPerimeter())。然后,在Circle、Rectangle等实现类中重写这些方法以计算不同形状图形的面积和周长。

public interface Shape {
    double PI = 3.14;

    double getArea();

    double getPerimeter();
}

public class Circle implements Shape {
    private double radius;

    public Circle(double radius) {
        this.radius = radius;
    }

    @Override
    public double getArea() {
        return PI * radius * radius;
    }

    @Override
    public double getPerimeter() {
        return 2 * PI * radius;
    }
}

在上面的例子中,我们定义了一个Shape接口,并在其中声明了两个常量和两个抽象方法。然后,在Circle实现类中重写了getArea()和getPerimeter()两个方法以计算圆形面积和周长

方法签名?

方法签名是指方法的名称、参数类型和返回类型的组合。它可以用来唯一标识一个方法,以便在Java程序中进行调用。

在Java中,方法签名包括以下三个部分:

1.方法名称:表示方法的名称,用于唯一标识该方法。
2.参数类型列表:表示该方法所接受的参数类型及其顺序。
3.返回类型:表示该方法返回值的数据类型。
举个例子,下面是一个简单的Java方法签名:

public int add(int a, int b)

其中,add为方法名称,int为返回类型,a和b为参数名称,int为参数类型。这个方法签名表示了一个名为add的公共方法,它接受两个整型参数a和b,并返回一个整型结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值