Java——抽象类和接口

一、抽象类概念

如果一个类中没有包含足够的信息来描绘一个对象,那么这个类就是抽象类.

在这里插入图片描述

1.2 抽象类语法

在Java中,一个类如果被 abstract 修饰称为抽象类,抽象类中被 abstract 修饰的方法称为抽象方法.

abstract class Shape {
    abstract  void draw();//抽象方法
}

class Flower extends Shape{
    @Override
    public void draw() {
        System.out.println("❀");//重写
    }
}

public class Test {
    public static void main(String[] args) {
        // Shape shape = new Shape();
       
        Shape shape = new Flower();
        shape.draw();
    }
}

注意事项:

  1. 抽象类不能实例化对象.
  2. 抽象方法不能被finalstatic修饰.
  3. final修饰的不能重写,而由abstract修饰的必须重写.

1.3 抽象类作用

在这里插入图片描述
预防出错:在实际开发过程中如果是子类完成,此时如果不小心调用成父类的, 使用普通类,编译器不会报错的. 但是父类是抽象类就会在实例化的时候提示错误.

二、接口

接口就是公共的行为规范标准,这样就可以通用**。

接口的定义方式就是将定义类的class关键字变成 interface关键字.

interface IUSB {
    double brand = 3.0;//默认是 final public static
    void openDevice();
    void closeDevice(); //默认是 public abstract
    default void cpu() {
        System.out.println("默认方法");
    }
}

提示: 创建接口时, 接口的命名一般以大写字母 I 开头+大驼峰.

2.2 接口的使用

实现一个笔记本电脑: 提供鼠标、键盘接口

  1. USB接口:打开设备、关闭设备功能 .
  2. 鼠标类:实现USB接口,并具备点击功能 .
  3. 键盘类:实现USB接口.
interface IUSB {
    double brand = 3.0;
    void openDevice();
    void closeDevice();
    default void cpu() {
        System.out.println("默认方法");
    }
}
//使用接口
class Mouse implements IUSB {

    @Override
    public void openDevice() {
        System.out.println("打开鼠标");
    }

    @Override
    public void closeDevice() {
        System.out.println("关闭鼠标");

    }
    public void click() {
        System.out.println("鼠标点击");
    }
}

class KeyBoard implements IUSB {

    @Override
    public void openDevice() {
        System.out.println("打开键盘");
    }

    @Override
    public void closeDevice() {
        System.out.println("关闭键盘");

    }
}

public class Test9 {
    public static void main(String[] args) {
        func(new KeyBoard());
        func1(new KeyBoard());
        System.out.println(IUSB.brand);
    }
    public static void func(IUSB iusb) {
        iusb.openDevice();
    }
    public static void func1(IUSB iusb) {
        iusb.closeDevice();
    } 
}

注意事项:

  1. 接口不能使用new来创建对象.
  2. 接口方法默认是 public abstract.
  3. 接口中不能定义静态代码块和构造方法.
  4. 接口虽然不是类,但是编译后字节码文件也是.class的.

三、抽象类和接口的区别

在这里插入图片描述
核心区别: 抽象类中可以包含普通方法和普通字段, 子类可以直接使用, 而接口中不能包含普通方法, 子类必须重写所有的抽象方法.

与君共勉: 昨天不过是今天的回忆,明天不过是今天的梦想.
在这里插入图片描述

  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 18
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

web图解

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值