zoukankan      html  css  js  c++  java
  • java学习笔记9 (接口)

    接口:
    接口是一种特殊的抽象类

    接口是功能的集合,  可以看作是一种数据类型,是比抽象类更抽象的”类“;

    接口只描述所应该具备的方法,并没有具体实现,具体实现由接口的实现类(相当于接口的子类)来完成

    这样将功能的实现与定义分开,优化了程序设计

    接口的成员方法全抽象, 不能存在带有方法体的方法

    接口中无法定义普通的成员变量,必须定义为常量

    接口定义抽象方法有固定的格式

    一切事物皆有功能,即一切事物都有接口

    接口的定义规则

    public interface MyInterface {
        public static final int a = 1;
        public abstract void function();
    }

    接口的实现类(类与类之间叫继承,类与接口之间叫实现)

    public class MyInterfaceImpl implements MyInterface{
        public void function(){
            System.out.println("实现类,重写接口方法");
        }
    }

    测试:

    public class Test {
    
        public static void main(String[] args) {
            MyInterfaceImpl my = new MyInterfaceImpl();
            my.function();
        }
    
    }

    接口中成员变量的特点:

    注意这里的public  static  final  三个修饰词可以省略任意,效果不变,但建议写全

    接口中成员方法的特点:
    注意这里的public  abstract也是选择性写的,效果一样,建议写全

    实现类,实现接口,重写接口全部抽象方法,创建实现类对象

    接口不可以创建对象

    子类必须覆盖掉接口中所有的抽象方法后,才可以实例化,否则子类是一个抽象类

    接口的多实现:

    接口最重要的体现:解决多继承的弊端,将多继承这种机制在Java中通过多实现完成了

    解决安全隐患原理:接口中的方法全是抽象的,没有主体,方法依赖实现类的重写才可以实现,因此没有安全问题

    因此接口的多实现解决了单继承的局限性

    例::

    接口A:

    public interface A {
        public abstract void a();
    
        public abstract void c();
    }

    接口B:

    public interface B {
        public abstract void a();
    
        public abstract void b();
    }

    多实现:

    /*
     * 类C,同时实现两个接口,接口A,B
     * 作为实现类,C必须重写两个接口的所有抽象方法,才可以建立C类对象
     * */
    public class C implements A, B {
        public void a() {
        }
    
        public void b() {
        }
    
        public void c() {
        }
    }

    类继承类的同时,还可以实现接口:

    类D:

    public abstract class D {
        public abstract void d();
    }

    测试:

    //在继承一个类(只能是一个)的同时,实现多个接口
    public class C extends D implements A, B {
        public void a() {
        }
    
        public void b() {
        }
    
        public void c() {
        }
    
        public void d() {
    
        }
    }

    接口存在多继承

    由于接口的方法都是抽象的,所以不存在安全隐患

    关于Java的小问题

    Java中到底存在多继承吗?

    答:类没有多继承,接口之间存在多继承

    接口的思想:

    举例:电脑上有多个插口,这些插口可以插入相应的设备,因为这些设备生产的时候符合了这个插口的使用规则,否则无法插入使用

    接口 在开发中的好处:

    1  接口的出现扩展了共能

    2  接口其实就是暴漏出来的规则

    3 接口的出现降低了耦合性,设备与设备之间实现了解耦(笔记本电脑usb插口是否被使用  电脑都可以运行)

    接口和抽象类的共同点:
    1都位于继承的顶端,用于被其他类实现或继承

    2 都不能直接实例化对象

    3 都包含抽象方法,其子类都必须覆写这些抽象方法

    区别:

    1 抽象类为部分方法提供实现,避免子类重复实现这些方法,提高代码的复用性,而接口只能包含抽象方法

    2一个类只能继承一个直接父类(可能是抽象类),却可以实现多个接口,接口弥补了Java的单继承

    思想方面的区别:
    抽象类是这个事物中应该具备的内容,继承体系是一种is。。。a的关系

    接口是这个事物中的额外内容,继承体系是一种like...a 的关系

    伪代码举例

    class  贼   extends 人  implements 偷盗

    贼本身是一个人,他可以偷盗,但并不是所有的人都偷盗

    选用:

    优先选用接口,尽量少使用抽象类

    需要定义子类的行为,又要为子类提供共性功能时,选用抽象类

    综合案列  (电脑):

    public class Test {
        public static void main(String[] args) {
            //创建笔记本对象,调用笔记本的功能
            Computer com = new Computer();
            com.openComputer();
            
            //调用笔记本使用USB设备的方法
            //参数,是USB接口类型,接口不能建立对象
            //调用方法,传递USB接口的实现类的对象
            //Mouse m = new Mouse();
            com.useUSB(new Mouse());
            //使用USB设备,使用键盘
            com.useUSB(new Keyboard());
            
            com.closeComputer();
        }
    }
  • 相关阅读:
    PHP 单态设计模式
    五中常见的PHP设计模式
    PHP如何定义类及其成员属性与操作
    thinkphp 中MVC思想
    1.4 算法
    1.3 迭代器
    1.2 容器-container
    1.1 STL 概述
    2.3顺序容器-deque
    2.2 顺序容器-list
  • 原文地址:https://www.cnblogs.com/bxl-1016/p/10603885.html
Copyright © 2011-2022 走看看