Java抽象类(Abstract Class)与接口(Interface)区别_Ubuntu_青云站长教程网
欢迎来到站长教程网!
  • 秒到短信接口 免费试用
  • 微信支付宝接口 秒结算
  • 中文网站排名|申请加入
  • 搜索引擎全站查询
  • 查询移动网站权重数据
  • 海外主机 台湾公司直销
  • Ubuntu

    当前位置:主页 > 服务器教程 > Ubuntu >

    Java抽象类(Abstract Class)与接口(Interface)区别

    时间:2019-08-13|栏目:Ubuntu|点击:
  • 抽象类与接口比较

    抽象类跟接口类似,都不能实例化,可能包含不需实现方法或已实现的方法。

    抽象类可以定义一些不是静态或常量的字段,定义 public, protected, private访问级别的具体方法。

    接口的所有字段自动是public、静态、常量,所有定义的方法的访问级别都是public。

    类只能继承一个抽象类,可以实现多个接口。

    抽象类使用场景

    1、你想在几个密切相关的类共享代码。

    2、你想让继承你抽象类的类有一些共用的字段或方法,或想设置protected, private的访问级别。

    3、你想声明非静态或非常量的字段。这样可以定义访问或修改字段状态的方法。

    接口使用场景

    1、你想要不相关的类实现你的接口。

    2、只想声明特定数据类型的行为,不关注实现的情况。

    3、实现多继承效果。

    例子

    An example of an abstract class in the JDK is AbstractMap, which is part of the Collections Framework. Its subclasses (which include HashMap, TreeMap, and ConcurrentHashMap) share many methods (including get, put, isEmpty, containsKey, and containsValue) that AbstractMap defines.

    An example of a class in the JDK that implements several interfaces is HashMap, which implements the interfaces Serializable, Cloneable, and Map<K, V>. By reading this list of interfaces, you can infer that an instance of HashMap (regardless of the developer or company who implemented the class) can be cloned, is serializable (which means that it can be converted into a byte stream; see the sectionSerializable Objects), and has the functionality of a map. In addition, the Map<K, V> interface has been enhanced with many default methods such as merge and forEach that older classes that have implemented this interface do not have to define.

    Note that many software libraries use both abstract classes and interfaces; the HashMap class implements several interfaces and also extends the abstract class AbstractMap.

    接口能不能有实现的方法?

    Java8允许接口有默认方法和静态方法,只不过调用方式不一样,如下。

    public interface RdNum {
        void play();
       
        static int getANum(){
            return 123;
        }
       
        default String getAStirng(String str){
            return str + "嘤嘤嘤";
        }
    }

    public class R implements Interface {
        ......
    }

    public class Test {
        public static void main(String[] args){
            R r = new R();
            System.out.println(r.getAStirng("哈哈哈"));   
            System.out.println(RdNum.getANum());
        }
    }

    参考文献

    https://docs.oracle.com/javase/tutorial/java/IandI/abstract.html

    上一篇:Java制作验证码(Java验证码小程序)

    栏    目:Ubuntu

    下一篇:突破Android P非公开API限制

    本文标题:Java抽象类(Abstract Class)与接口(Interface)区别

    本文地址:http://www.jh-floor.com/fuwuqijiaocheng/Ubuntu/20100.html

    您可能感兴趣的文章

    广告投放 | 联系我们 | 版权申明

    重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

    如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

    联系QQ:888888 | 邮箱:888888#qq.com(#换成@)

    Copyright © 2002-2017 青云站长教程网 版权所有 琼ICP备xxxxxxxx号