• Java编程思想学习笔记——接口


    1.抽象类和抽象方法

    抽象方法:不完整的,仅有声明而没有方法体。

       abstract void f();
    

    抽象类:包含抽象方法的类。(若一个类包含一个或多个抽象方法,则该类必须限定为抽象的。)

    1.用抽象类直接创建对象是不安全的,因为这个抽象类是不完整的。编译器通过这种方式保证了
    抽象类的纯粹性。

    public abstract class Person {
        public abstract void eat();
        public abstract void pee();
        public abstract void sleep();
    }
    
    
    
    //不能直接用抽象类创建对象
    //Person p = new Person();//错误
    

    2.一个类从抽象类中继承,若想创建改类的对象,就必须实现基类中的所有抽象方法。否则将无法创建该类的对象,
    并且导出类也是抽象类。

    //一个类继承自抽象类,必须实现这个抽象类中的所有抽象方法
    public class Male extends Person {
        @Override
        public void eat() {
            System.out.println("Male eat a lot!");
        }
    
        @Override
        public void pee() {
            System.out.println("Male pee by standing up");
        }
    
        @Override
        public void sleep() {
            System.out.println("Male sleep");
        }
    }
    
    
    //创建改导出类的对象
    Person p = new Male();
    

    3.可以创建一个没有任何抽象方法的抽象类。(若有这样一个类,包含任何抽象方法都显得没有实际意义,而且我们也想阻止产生这个类的任何对象)

    4.抽象类并不需要所有的方法都是抽象的。

    作用:
    1.明确类的抽象性,并告诉用户和编译器打算怎样来使用它们。
    2.抽象类是很有用的重构工具,使我们能很容易的将公共方法沿着继承层次向上移动(也就是将公共方法抽取重构到抽象类中)

    2.接口

    interface关键字使抽象更进一步,产生一个完全抽象的类,没有提供任何具体的实现。(只有方法名,参数列表和返回类型,没有任何方法体。接口只提供了形式,而未提供任何具体实现)

    public interface People {
        void eat();
        void sleep();
        void pee();
    }
    

    一个接口表示:“所有实现了该特定接口的类看起来都像这样”

    接口被用来建立类和类之间的协议(protocol)

    接口不仅仅是一个极度抽象的类,因为接口允许我们通过创建一个能够被向上转型为多种基类的类型
    来实现类似于多重继承的特性。(Java只支持单继承,但可以通过实现接口来达到多继承的效果)

    接口中可以包含域,但是这些域隐式地是static和final的。

    使用implements关键字让一个类遵循某个接口(或是一组接口)。它表示:"接口只是它的外貌(what it looks like),我们用类实现接口来声明它是如何工作的(how it works)"

    3.完全解耦

    • 策略设计模式: 创建根据所传递的参数对象的不同而具有不同的行为的方法(这类方法包含所要执行的算法中
      固定不变的部分,而策略包含变换的部分,策略就是传递进去的参数对象)

    • 适配器设计模式: 适配器中的代码将接受所拥有的接口,并产生所需要的接口。
      将接口从具体实现中解耦使得接口可以应用于多种不同的具体实现,因此代码也就更具复用性。

  • 相关阅读:
    Python设置桌面壁纸
    youtube-dl使用介绍
    Matlab pcg函数的句柄形式之参数传递
    Sublime 安装支持GBK的插件
    MarkdownPad安装
    ug7.5经常卡死的解决方法
    HM NIS edit打包软件
    UG工程制图
    egg框架中是如何使用MD5加密的 实现用户修改密码 小编在这里献丑了。。。。。
    今天遇到了vue项目中使用Iconfont图标 ,感觉挺实用的 随手记录下。只需简单的6步就可以实现
  • 原文地址:https://www.cnblogs.com/JohnTsai/p/4659400.html
Copyright © 2020-2023  润新知