Java——抽象类和接口

Java——抽象类和接口,第1张

一、抽象类概念

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


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. 抽象方法不能被final和static修饰.
  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的.
三、抽象类和接口的区别


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

与君共勉: 昨天不过是今天的回忆,明天不过是今天的梦想.

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/874015.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-13
下一篇 2022-05-13

发表评论

登录后才能评论

评论列表(0条)

保存