zoukankan      html  css  js  c++  java
  • 第十八节:详解Java抽象类和接口的区别

    标题图

    前言

    对于面向对象编程来说,抽象是它的特征之一。

    在Java中,实现抽象的机制分两种,一为抽象类,二为接口
    抽象类为abstract class,接口为Interface

    今天来学习一下Java中的抽象类和接口。

    目录

    1. 什么是抽象
    2. 什么是抽象类
    3. 什么是接口
    4. 区别
    5. 代码例子
    6. 结语

    什么是抽象

    从具体事物抽出,概括它们共同的方面,本质属性与关系等,称为抽象。看不见,摸不着的东西叫做抽象,抽象是人们对世界万物的感觉,用特定的图像表达出来,要理解抽象的东西,就必需从内心感受它们。

    举例,红色这个词语本身,在没有建立存在色彩这种概念以前,就是一个很抽象的东西。抽象说直白点就是把现实生活中复杂的问题抽象成一个简单的问题。举个例子,如人这个现实中的东西,抽象下就是person这个对象,对象有名字即类名,接着有属性即年龄,性别,身高等。对于对象中的方法即是人要吃饭,睡觉等。

    什么是抽象类

    抽象类的定义和使用格式

    abstract class 类名{
           类体
    }
    class 类名 extends 抽象类 {
              //实现全部抽象方法
    }

    抽象类是类对象的抽象集合,抽象类使用abstract关键字修饰,abstract不能与final并列修饰同一个类,在抽象类中具体抽象的是属性和行为,在抽象类中,含有抽象方法的类为抽象类,一定是抽象类,但抽象类中不一定含有抽象方法。

    抽象类不能被实例化,如果要实例化,需通过子类继承抽象类,然后子类必须重写父类的所有抽象方法。抽象方法在抽象类,仅此声明,方法的具体实现在子类中进行。抽象类只有被继承才有用武之地。

    //抽象类
    public abstract class Person {
     public abstract void run();
    }
    
    //子类继承抽象类
    public class Studentone extends Person{
     @Override
     public void run(){
      System.out.println("人会跑");
     }
    }
    
    //测试
    public class Test {
     public static void main(String[] args){
      Person person = new Student();
      person.run();
     }
    }
    
    //结果
    人会跑

    什么是接口

    接口的定义和使用格式

    interface 接口名 {
              [public] [static] [final] 变量;
              [public] [abstract] 方法;
    }
    class 类名 implement 接口列表 {
              //实现所有接口中声明的方法
    }

    接口是类行为方法的抽象集合,类行为方法,是对方法进行抽象,接口不是一个类,对于抽象类,它是对对象的抽象集合,对象即包含对属性和方法,接口是比抽象类更加抽象的一种。

    Java中的接口是为了降低功能模块间的耦合,子接口中所有方法都是抽象的,都是公有的。接口中的属性是全局常理即为public static final的,方法即public static的。关键字implements实现接口,Java中不能继承多个抽象类,但能实现多个接口,记住接口只能继承接口。

    interface Demo{
     void sleep();
     void play();
    }
    
    class Test implements Demo{
     void sleep();
     void play();
    }

    类必须实现接口中所有的方法,但抽象类可以不用实现接口中的所有方法。

    区别

    抽象类和接口语法层次

    public abstract class Demo {
        abstract void method1();
        void method2(){
        }
    }
    interface Demo {
        void method1();
        void method2();
    }

    可以看出接口是抽象类的特殊化。

    抽象类和接口设计层次

    1. 抽象类是对类抽象,而接口是对行为的抽象
    2. 抽象类为继承关系,接口为实现类与接口之间的契约关系
    3. 抽象类为单继承,接口为多“继承”。子类只能继承一个抽象类,但可实现多个接口。

    代码

    //抽象类
    abstract class Person {
     abstract void run();
     abstract void jump();
    }
    
    //接口
    interface School{
     void go();
    }
    
    //实现
    class Student extends Person implements School{
     void run();
     void jump();
     void go();
    }

    抽象类中成员变量默认为friendly,函数修饰符publicprotecteddefault
    接口属性为静态,public static final,成员函数为public

    结语

    • 详解Java抽象类和接口的区别

    小礼物走一走 or 点赞
     送❤

  • 相关阅读:
    tomcat启动超时
    sqlserver存储过程及mybatis调用——待续
    linux各种顔色代表
    linux ngix安装
    vue 报错解决:TypeError: Cannot read property '_t' of undefined"
    给iview项目加一个i18n国际化翻译
    初探iview
    vue-eslint配置文件
    js中通过Object.prototype.toString方法----精确判断对象的类型
    判断是对象还是数组的方法
  • 原文地址:https://www.cnblogs.com/dashucoding/p/11932570.html
Copyright © 2011-2022 走看看