zoukankan      html  css  js  c++  java
  • 大龄屌丝自学笔记Java零基础到菜鸟019

    抽象类,接口,类、接口关系,抽象类与接口的区别

    1、抽象类

    抽象方法:只有方法体的方法,用于定义抽象的、非具体的功能,如 abstract void eat(); 。

    抽象类:abstract class,可以包含抽象方法的类(抽象类不一定包含抽象方法,包含抽象方法的类一定是抽象类),如:abstract class Animal{} 。

    抽象类的特点:抽象类既可以包含抽象方法,也可以包含非抽象方法。

           抽象类有构造函数,但不能被实例化。构造函数用于子类访问父类数据的初始化。

           抽象类的子类是抽象类,该子类不需要重写抽象方法。

           抽象类的子类是非抽象类,该子类必须重写全部抽象方法(实例化)。

     1 abstract class Animal{
     2     public abstract void sleep();
     3 }
     4 
     5 class Cat extends Animal{
     6      public void sleep(){
     7         System.out.println("小猫睡觉");
     8     }
     9 }
    10 
    11 class Fin{
    12     public static void main(String[] args){
    13         Animal ani=new Cat();
    14         ani.sleep();
    15     }
    16 }

    注意事项:抽象类与 private、final 关键字冲突,static 关键字无意义。

    2、接口

    接口:interface,用于定义方法而不实现方法的引用类型(其他的类和接口可以实现接口),如:interface ITrain{} 。

    接口的特点:接口的实现用 implement 关键字,如:class ITrainImpl implement ITrain{} 。

          接口是抽象的不能实例化。通过子类实例化。

          接口的子类可以是抽象类,但是抽象类实现接口无意义。

          接口的子类是非抽象类,该子类必须重写全部抽象方法(实例化)。

          接口中只能包含抽象方法,不能包含非抽象方法,默认修饰符public。

          接口中的变量,默认是常量。

          接口没有构造函数。

    注意事项:类实现接口的本质是:类 extends Object implement 接口{} 。

         Object类,是所有类层次结构的根类,所有类都使用Object类作为超类,是所有对象(包扩数组)都实现这个类的方法。

    3、类、接口关系

    类与类的关系:继承关系,只能单继承,可以多层继承。

    接口与接口的关系:实现关系,可以多实现,可以多层实现。

    类与接口的关系:继承关系,可以多继承,可以多层继承。

    4、抽象类与接口的区别

    成员区别:抽象类,常量、抽象方法、变量、非抽象方法,有构造函数。

         接口,常量、抽象方法,没有构造函数。

    关系区别:抽象类,类只能单继承

         接口,接口可以多继承/实现

    理念区别:抽象类,被继承体现的是抽象出的共性的关系,如:猫(类)是动物(抽象类)。

         接口,被实现的是扩展出的扩展功能,如:猫(类)会卖萌(接口)。

  • 相关阅读:
    NGINX新手小白快速上手Centos搭建Nginx服务器
    Nginx+SSL+gunicorn+gevent+Django的配置
    nginxhttpflvmodule 的部署
    gunicorn+Django加载静态文件
    正确利用 ADO.NET
    五种提高 SQL 性能的方法
    关于能够触发BFC特性的属性,以及它们各自带来的副作用
    PID库与PID基本优化(四)
    PID库与PID基本优化(二)
    Mahony姿态解算算法笔记(一)
  • 原文地址:https://www.cnblogs.com/liverpool/p/4817417.html
Copyright © 2011-2022 走看看