zoukankan      html  css  js  c++  java
  • 第6篇 Java中的接口与抽象类

    接口 Interface

    在JAVA编程语言中是一个抽象类型,是抽象方法的集合。接口通常以interface来声明。一个类通过实现接口(implements)的方式,从而实现接口的抽象方法。

    • 接口通过interface关键字来定义
    • 接口中不能实现方法,但是能声明方法
    • 类通过implements关键字来实现接口
    • 一个类如果实现了接口,就必须实现接口中的所有方法
    • 一个类可以通过implements关键字实现多个接口,但只能继承一个父类
    • 面向接口的多态(接口的引用指向其实现类)
    • 接口不能被实例化
    • 接口中的方法都是抽象方法(jdk1.8中出现的新特性:default、static。可以有方法体,不再是抽象方法。)
    • 接口中一般没有属性,有则必须被声明为pulic static & final形式(不声明编译器自动设置为 public static final类型)

    接口与类的区别

    • 接口不能实例化对象
    • 接口没有构造方法
    • 接口中所有方法必须是抽象方法
    • 接口不能包含成员变量,除非是public static final变量
    • 接口不是被类继承了,而是要被类实现
    • 接口支持多继承(接口与接口之间只能是继承extends的关系,可以多继承)

    抽象类与接口的区别

    • 抽象类中可以普通方法和抽象方法共存
    • 抽象类中可以有各种类型的成员变量
    • 接口中不能含有静态方法,抽象类中可以有
    • 一个类只能继承一个抽象类,却可以实现多个接口

    接口的声明

    (想了想还是菜鸟教程的声明写的好看些)

    [可见度] interface 接口名称 [extends 其他的类名] {
            // 声明变量
            // 抽象方法
    }

    接口的实现

    类在实现接口时必须实现接口的所有方法。

    接口可以实现多态的功能。

    示例

    interface USB{
        public void connect();
    }
    //鼠标类实现USB接口
    class Mouses implements USB{
    
        @Override
        public void connect() {
            System.out.println("鼠标连接USB");
        }
    }
    //键盘类实现USB接口
    class KeyBoard implements USB{
    
        @Override
        public void connect() {
            System.out.println("键盘连接USB");
        }
    }

    我们可以通过下面的方法来实现不同对象对接口的实现:

    public static void useUSB(USB usb) {
        usb.connect();
    }
    
    public static void main(String[] args) {
        Mouses mouses = new Mouses();
        KeyBoard keyBoard = new KeyBoard();
        useUSB(mouses);
        useUSB(keyBoard);
    }

    通过给useUSB方法来传入不同的USB接口对象,从而达到多态的效果。最后打印结果如下:

    鼠标连接USB
    键盘连接USB

    接口的继承

    这里由于老师上课并没有重点提,不过在后面集合一章就是很明显的例子。

    迭代器接口:

    public interface Iterable<T> {
        /**
         * 迭代器的一些方法
         */

      ......
    }

    Collection 接口:

    public interface Collection<E> extends Iterable<E> {
     
        /**
         * Collection 的一些方法
         */
    
      ......
    
    }

    List 接口:

    public interface List<E> extends Collection<E> {
    
        /**
         * List 的一些方法
         */
    
      ......
    }

    接口的多继承

    接口的继承与类的继承一点很大的区别就在于接口可以多继承,多继承的方式与类实现多个接口的形式类似:

    public interface Hockey extends Sports, Event

    Java 抽象类(面试)

    用·abstract修饰的类叫做抽象类

    抽象类的一些特点

    • 抽象类不能被实例化,只能实例化抽象类的子类。
    • 抽象类不一定包含抽象方法,但包含抽象方法的一定是抽象类
    • 构造方法不能被声明成抽象方法
    • 子类必须父抽象类的所有抽象方法,除非子类也是抽象类
    • 用abstract修饰的方法称之为抽象方法,抽象方法只有方法声明,没有方法体
    • 抽象类中的方法可以是抽象方法,也可以是普通方法
    • 没有抽象的属性,属性不能被abstract修饰
  • 相关阅读:
    禁止 git 自动转换换行符
    一个单元测试问题的解决
    关于脏读、幻象读、不可重复读的理解
    PKCS7 的 attached 和 detached 方式的数字签名
    关于DES加密中的 DESede/CBC/PKCS5Padding
    解决grep的结果无法显示文件名的问题
    解决64位操作系统下运行psql的问题
    一个用于将sql脚本转换成实体类的js代码
    批量将代码中的 get_XXX 替换成 XXX
    关于数据库中密码的存储
  • 原文地址:https://www.cnblogs.com/JuanF/p/9272922.html
Copyright © 2011-2022 走看看